Questions tagged «objective-c»

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

4
为什么Objective-C方法名称的最后一部分必须带一个参数(当有多个部分时)?
在Objective-C中,您不能在最后一个组件不带参数的地方声明方法名称。例如,以下内容是非法的。 -(void)take:(id)theMoney andRun; -(void)take:(id)yourMedicine andDontComplain; 为什么用Objective-C这样设计?仅仅是Smalltalk的产物,没有人看到有需要摆脱的必要吗? 此限制在Smalltalk中是有意义的,因为Smalltalk在消息调用周围没有定界符,因此最终组件将被解释为最后一个参数的一元消息。例如,BillyAndBobby take:'$100' andRun将解析为BillyAndBobby take:('$100' andRun)。在Objective-C中,这不需要括号,这无关紧要。 支持无参数选择器组件不会像用程序员选择的方法名称(例如,runWith:而不是语言)那样以所有常用的语言度量方法给我们带来很多好处。take:andRun)不会影响程序的功能语义,也不会影响语言的表现力。确实,具有无参数组件的程序与没有该组件的程序等效。因此,我对不需要此功能的答案不感兴趣(除非这是Objective-C设计师的陈述原因;是否有人偶然知道Brad Cox或Tom Love?他们在这里吗?)或那句话如何编写方法名称,以便不需要该功能。主要的好处是可读性和可写性(这与可读性一样,只是...您知道),因为这意味着您可以编写与自然语言句子更加相似的方法名称。这样的人-(BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication*)theApplication(马特·加拉格尔指出的“可可的爱”-(BOOL)application:(NSApplication*)theApplication shouldTerminateAfterLastWindowClosed,因此将参数直接放在适当名词的旁边。 苹果的Objective-C运行时(例如)完全能够处理这类选择器,那么为什么不编译呢?为什么不同时在方法名称中支持它们呢? #import <Foundation/Foundation.h> #import <objc/runtime.h> @interface Potrzebie : NSObject -(void)take:(id)thing; @end @implementation Potrzebie +(void)initialize { SEL take_andRun = NSSelectorFromString(@"take:andRun"); IMP take_ = class_getMethodImplementation(self, @selector(take:)); if (take_) { if (NO == class_addMethod(self, take_andRun, take_, "@@:@")) { …




12
从ObjectiveC中的NSDictionary对象创建URL查询参数
由于所有的URL处理对象都位于标准可可库中(NSURL,NSMutableURL,NSMutableURLRequest等),我知道我必须忽略一种简单的方法来以编程方式编写GET请求。 目前,我正在手动附加“?” 后跟由“&”连接的名称值对,但是我所有的名称和值对都需要手动编码,因此NSMutableURLRequest在尝试连接到URL时不会完全失败。 感觉好像我应该可以使用预烘焙的API来....是否有任何现成的东西可以将NSDictionary查询参数附加到NSURL?我还有其他方法可以解决这个问题吗?


4
iOS Prefix.pch最佳做法
我已经看到许多开发人员在其iOS项目的Prefix.pch中添加了各种便利宏。 您建议(或不建议)向iOS Prefix.pch文件添加什么?您的Prefix.pch是什么样的?
90 ios  objective-c  xcode  pch 


4
如何在UITextField返回键上添加动作?
我的视图中有一个按钮和文本文本字段。当我单击文本字段时,将出现一个键盘,并且我可以在文本字段上书写,并且还可以通过添加以下内容单击按钮来关闭键盘: [self.inputText resignFirstResponder]; 现在我要启用键盘的返回键。当我按键盘时,键盘将消失,并且会发生某些事情。我怎样才能做到这一点?




12
-[UITableView _endCellAnimationsWithContext:]中的断言失败
希望这将是一个快速修复。我一直在试图找出我不断得到的错误。该错误在下面列出,而附录则在下面。 任何帮助表示赞赏。 谢谢 2012-04-12 21:11:52.669 Chanda [75100:f803] ---中的断言失败-[UITableView _endCellAnimationsWithContext:],/SourceCache/UIKit_Sim/UIKit-1914.84/UITableView.m:1037 2012-04-12 21:11:52.671 Chanda [75100:f803] ---因未捕获的异常而终止应用程序NSInternalInconsistencyException' ,原因:“无效的更新:第0节中的行数无效。更新(2)之后,现有节中包含的行数必须等于更新(2)之前该节中包含的行数,再加上或减去从该部分插入或删除的行数(插入1,删除0),再加上或减去移入或移出该部分的行数(移入0,移出0)。 #import "AppDelegate.h" @implementation AppDelegate @synthesize window = _window; @synthesize databaseName,databasePath; - (BOOL)application: (UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions { self.databaseName = @"Customers.db"; NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentDir = [documentPaths objectAtIndex:0]; self.databasePath = [documentDir …

16
如何将UITableView设置为分组样式
我有一个UITableViewController带有部分的子类。这些部分以默认样式显示(无圆角)。如何在代码中将TableView样式设置为分组?我没有为此使用Interface Builder,所以我需要类似 [self.tableView setGroupedStyle] 我搜索了Stack Overflow,但找不到答案。

11
将c-struct放入NSArray的最佳方法是什么?
将c结构存储在中的通常方法是NSArray什么?优点,缺点,内存处理? 值得注意的是,有什么之间的区别valueWithBytes和valueWithPointer -由Justin及以下鲶鱼提出。 这是苹果valueWithBytes:objCType:为将来的读者讨论的链接... 对于某些横向思考并更多地关注性能,Evgen提出了STL::vector在C ++中使用的问题。 (这引起了一个有趣的问题:是否有一个快速的c库,它没有什么不同,STL::vector但很轻巧,可以最小化“整齐地处理数组” ...?) 所以原来的问题... 例如: typedef struct _Megapoint { float w,x,y,z; } Megapoint; 那么:将自己的结构存储在中的通常的,最佳的,惯用的方法NSArray是什么?如何处理该成语中的记忆? 请注意,我特别在寻找用于存储结构的惯用语。当然,可以通过开设一小堂新课来避免这一问题。但是,我想知道将结构实际放入数组中的常用习惯,谢谢。 顺便说一句,这也许是NSData方法吗?不好... Megapoint p; NSArray *a = [NSArray arrayWithObjects: [NSData dataWithBytes:&p length:sizeof(Megapoint)], [NSData dataWithBytes:&p length:sizeof(Megapoint)], [NSData dataWithBytes:&p length:sizeof(Megapoint)], nil]; BTW作为参考,并感谢Jarret Hardie,这是在其中存储CGPoints和类似内容的方法NSArray: NSArray *points = [NSArray arrayWithObjects: [NSValue valueWithCGPoint:CGPointMake(6.9, 6.9)], [NSValue valueWithCGPoint:CGPointMake(6.9, …

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.