Questions tagged «objective-c»

仅在有关Objective-C功能或取决于语言代码的问题上使用此标记。标签[cocoa]和[cocoa-touch]应该用于询问Apple的框架或类。使用相关标签[ios],[macos],[apple-watch]和[tvos]来解决特定于这些平台的问题。

4
Objective-C中的方法语法
有人可以为我解释此方法声明语法吗?在此功能中,将返回UIPickerView(iPhone上的老虎机UI)的行数。据我了解,该方法称为“ pickerView”,并返回一个NSInteger。 它首先传入一个名为' pickerView' 的UIPickerview指针,为什么该方法与参数同名? 接下来是称为组件的NSInteger参数,该参数告诉我们我们要为哪个组件计数行。确定该方法主体中的逻辑。 什么是' numberOfRowsInComponent?它似乎描述了我们要返回的值,但它位于参数的中间。 - (NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { if (component == kStateComponent) return [self.states count]; return[self.zips count]; }

4
为什么通常给Objective-C委托赋予属性而不是保留?
我正在浏览由史蒂文森(Scott Stevenson)维护的精彩博客,并且我试图理解一个基本的Objective-C概念,即向代表分配“分配”属性与“保留”属性。请注意,在垃圾回收环境中两者都是相同的。我最关心的是基于非GC的环境(例如:iPhone)。 直接来自Scott的博客: “ assign关键字将生成一个设置器,该设置器将值直接分配给实例变量,而不是复制或保留该值。这最适合诸如NSInteger和CGFloat之类的原始类型,或不直接拥有的对象(例如委托)。” 您不直接拥有委​​托对象是什么意思?我通常会保留我的代表,因为如果我不希望他们走入深渊,保留会为我解决。我通常将UITableViewController从其各自的dataSource和委托中分离出来。我也保留该特定对象。我想确保它永远不会消失,所以我的UITableView总是有它的委托。 有人可以进一步解释我错在哪里/为什么错了,以便我能了解在Objective-C 2.0编程中使用委托上的assign属性而不是retain的常见范例吗? 谢谢!

1
如何单击透明UIView后面的按钮?
假设我们有一个带有一个子视图的视图控制器。子视图占据屏幕中心,所有边距均为100 px。然后,我们添加一堆小东西以在该子视图中单击。我们仅使用子视图来利用新框架(子视图内的x = 0,y = 0实际上在父视图中为100,100)。 然后,假设我们在子视图后面有一些东西,例如菜单。我希望用户能够在子视图中选择任何“小东西”,但是如果那里什么也没有,我希望通过它触摸一下(因为无论如何背景都是清晰的),到达它后面的按钮。 我怎样才能做到这一点?看起来touchesBegan经历了,但是按钮不起作用。

19
故事板不包含带有标识符的视图控制器
我不断收到以下错误: Storyboard (<UIStoryboard: 0x7ebdd20>) doesn't contain a view controller with identifier 'drivingDetails' 这是代码: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"drivingDetails"]; controller.title = [[dao libraryItemAtIndex:indexPath.row] valueForKey:@"name"]; [self.navigationController pushViewController:controller animated:YES]; } 我已经在identifier上设置了,UIStoryboard但仍然收到此错误。

8
从后台打开应用程序时未调用ViewDidAppear
我有一个View Controller,其中我的值为0(标签),当我从另一个视图控制器中打开该View Controller时,ViewController我已设置viewDidAppear为label 设置为20。它可以正常工作,但是当我关闭我的应用程序并再次打开我的应用程序时,该值不会更改,因为viewDidLoad,viewDidAppear并且viewWillAppear没有任何调用。打开我的应用程序时该怎么打电话。我需要做些什么applicationDidBecomeActive吗?
175 ios  objective-c  iphone  xcode  swift 

2
最佳实践?-数组/字典作为核心数据实体属性
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 4年前关闭。 改善这个问题 我是Core Data的新手。我注意到集合类型不能用作属性类型,并且想知道最有效的方式是将数组/字典类型数据存储为属性(例如,组成街道,城市等地址的元素)不需要单独的实体,并且比单独的属性/字段更方便地存储为字典/数组。谢谢。

11
当前位置权限对话框消失得太快
我的应用程序获取用户的位置,获取坐标,并提供往返于其目的地或起点的距离。所有这些可能的目标都显示在表格视图中,因此我在填充表格的同时获取了用户的坐标。唯一的事情是,询问用户位置的警报视图出现然后消失得如此之快,以至于无法单击它! 有什么方法可以在应用首次加载时手动显示此警报?我尝试在应用程序加载时获取用户的位置,以尝试强制显示警报,但这没有用。

13
解决Objective-C名称空间冲突的最佳方法是什么?
Objective-C没有名称空间;与C非常相似,所有内容都位于一个全局名称空间内。常见的做法是在类的前面加上缩写,例如,如果您在IBM工作,则可以给它们加上“ IBM”作为前缀。如果您为Microsoft工作,则可以使用“ MS”;等等。有时,缩写是指项目,例如Adium在类的前面加上“ AI”(因为后面没有公司可以使用缩写)。苹果为类添加NS前缀,并说该前缀仅保留给苹果。 到目前为止一切顺利。但是在类名前面附加2到4个字母是一个非常非常有限的名称空间。例如,MS或AI可能具有完全不同的含义(例如AI可能是人工智能),并且其他一些开发人员可能决定使用它们并创建一个同名的类。Bang,名称空间冲突。 好的,如果这是您自己的类之一与所使用的外部框架之间的冲突,则可以轻松更改类的命名,没什么大不了的。但是,如果您使用两个外部框架,这两个框架都没有来源并且您不能更改,那该怎么办?您的应用程序与它们两者都链接,您会遇到名称冲突。您将如何解决这些问题?以一种仍然可以同时使用两个类的方式来解决它们的最佳方法是什么? 在C语言中,您可以通过不直接链接到库来解决这些问题,而是在运行时使用dlopen()加载库,然后使用dlsym()找到要查找的符号并将其分配给全局符号(即可以以您喜欢的任何方式命名),然后通过此全局符号进行访问。例如,如果由于某些C库具有名为open()的函数而发生冲突,则可以定义一个名为myOpen的变量,并将其指向该库的open()函数,因此当您要使用系统open()时,您只需使用open(),当您要使用另一个时,可以通过myOpen标识符进行访问。 在Objective-C中是否可能有类似的事情,如果没有,是否可以使用其他聪明,棘手的解决方案来解决命名空间冲突?有任何想法吗? 更新: 只是为了澄清这一点:当然欢迎提出建议如何避免名称空间冲突或如何创建更好的名称空间的答案;但是,我不会接受他们作为答案,因为他们不能解决我的问题。我有两个库,它们的类名冲突。我不能改变他们。我没有任何一个的来源。碰撞已经存在,而有关如何提前避免的提示将不再有用。我可以将它们转发给这些框架的开发人员,并希望他们将来选择更好的名称空间,但是目前我正在寻找一种解决方案,以在单个应用程序中立即使用这些框架。有什么解决办法可以做到这一点?



9
可可核心数据有效的实体计数方法
我读了很多有关Core Data的文章。但是什么是对Entity-Type进行计数的有效方法(例如SQL可以使用SELECT count(1)...)。现在,我只需选择全部NSFetchedResultsController并获得计数就可以解决此任务NSArray!我相信这不是最好的方法。

24
错误消息“ _BSMachError:(os / kern)无效功能(20)”
请注意,此错误消息的级别很低,因此在不同情况下会因不同原因而出现。如果您遇到的情况在以下答案之一中未提及,请考虑同时添加您的情况,因此对于可能引发此错误消息的各种情况,这可能是一个中心答案。 编辑2015年11月10日另请注意,我将自己的答案标记为答案,但这是在其他人发布之前的。我猜没有一个应该真正被标记为答案,因为正如我们现在在下面看到的那样……此错误并没有一个答案,因为它的级别太低了。 我在跑 iOS 9.0模拟器 XCode 7.0 昨天一切都很好。 今天,经过大量与旋转相关的工作之后,当我在模拟器中运行应用程序并对它进行旋转时,我开始在控制台输出中收到此错误。 _BSMachError:(os / kern)无效功能(20) _BSMachError:(os / kern)无效名称(15) -我已经清除了我的构建文件夹,-我已经清除了派生数据文件夹,-我已经重置了模拟器。 我当时在和 UIViewController viewWillLayoutSubviews UIViewController viewWillTransitionToSize:... 我还在IB中的“属性”检查器中检查了各种“绘图”设置。 我还在UIView上创建了一个实用程序类别,在其中创建了一堆创建的方法,CGRect并帮助我将框架分配给视图。
173 ios  objective-c  xcode7 

10
Objective-C可可应用程序中的正则表达式
初始谷歌搜索表明在Objective-C Cocoa应用程序中没有内置的方式来执行正则表达式。 所以有四个问题: 是真的吗 你在跟我开玩笑吗? 好的,那么您推荐一个不错的开源库吗? 有什么方法可以导入NSScanner类而无需导入库就足够接近?
173 objective-c  regex  cocoa 

16
为iOS 7半透明UINavigationBar实现明亮生动的色彩
iOS 7.1更新:在此更新中,似乎已忽略了用于修改UINavigationBar中的Alpha通道的解决方法。目前,最好的解决方案似乎是“处理”,并希望您选择的任何颜色都能呈现半透明的效果。我仍在研究解决此问题的方法。 iOS 7.0.3更新:使用iOS 7.0.3时,我们创建的GitHub库已更新为可以稍微解决此问题。不幸的是,没有一种魔术公式可以支持在iOS 7.0.2和更低版本以及iOS 7.0.3中创建的两种颜色。好像苹果公司提高了饱和度,但是却以不透明度为代价(因为模糊的半透明性取决于不透明度)。我和其他一些人正在努力为此创建更好的解决方案。 我敢肯定,很多人已经遇到了iOS 7倾向于使半透明的UINavigationBar的颜色不饱和的问题。 我的目标是使用这种色调但半透明的颜色实现UINavigationBar: 但是,半透明,我明白了。背景视图为白色,据我所知,它将使该视图更浅: 有什么方法可以在保持半透明的同时获得原始颜色?我注意到Facebook能够使其条形成为其丰富的蓝色,如下所示: ..所以我知道一定有办法。背景视图显然在这里有所不同,但是它们的大多数内容也是灰色/白色。看来,无论您使用什么颜色,您都无法在半透明状态下获得鲜艳的色彩。 更新了解决方案。 这是我最终想到的解决方案。我采用了aprato的解决方案,然后将该自定义包含UINavigationBar在一个UINavigationController子类中。我创建了一个存储库,该存储库在下面列出了此实现以及一个示例应用程序。 //////////////////////////// // CRNavigationBar.m //////////////////////////// #import "CRNavigationBar.h" @interface CRNavigationBar () @property (nonatomic, strong) CALayer *colorLayer; @end @implementation CRNavigationBar static CGFloat const kDefaultColorLayerOpacity = 0.5f; static CGFloat const kSpaceToCoverStatusBars = 20.0f; - (void)setBarTintColor:(UIColor *)barTintColor { [super setBarTintColor:barTintColor]; …

30
删除UITableView中的单元格之前的空白空间
我目前正在尝试将a放置UITableView在不同的位置,而不是放在视图控制器的顶部。如此说来,它正在尝试在顶部添加标题以说明导航栏,但这不是必需的,因为我没有控制器的顶部。 如果我将UITableView单元格放置在想要放置单元格的位置的左上角,则不会在其中放置单元格: 现在,如果我只是向上移动表格视图,以便将单元格放置在正确的位置,则会遇到另一个问题-滚动时可以将单元格移动到该位置(这是用我的手指在导航控制器上方): 当我放开时,是的-单元格将位于搜索栏的正下方,但这显然是一个问题,如何使它们位于搜索栏上方。 我将如何去做?有没有更简单的方法?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.