我正在学习Objective-C,并且拥有C/C++背景.
在面向对象的C++中,总是需要在定义(实现)它之前声明方法,即使它是在父类中声明的.
在过程式C,IIRC中,只要定义一个函数,只要从同一个编译单元中的其他东西(即同一个文件)调用它就可以远离文件中的某个函数(嗯,提供)你没有在其他地方用"extern"声明它.
现在,在Objective-C中,您似乎只需要在头文件中声明选择器,如果它们将被外部使用,并且您可以在.m文件中组合选择器就好了,并在其中调用它们.m文件.此外,似乎永远不会(重新)定义委托方法或继承的方法.
我是在正确的轨道上吗?什么时候需要在Objective-C中定义一个选择器?
我正在统一这些不一致的命名约定,这个问题最近让我发疯了.
在我正在使用的代码库中没有关于"ID"的约定; "ID","Id"甚至"iD"使用不一致.
****问题**:在.NET中,你们如何将"ID"大写?例如,nodeID,nodeId?FolderID或FolderId?
****编辑**:复数案件怎么样?那么我应该做"NodeIDs"还是"NodeIds"?
谢谢
我需要一个像集合一样的集合.基本上我正在扫描一个长字符串并在集合中添加单词,但我希望能够检测到何时出现重复.
如果集合不可用,那么在Ruby中最有效的方法是什么?布朗尼指的是例如代码.
我想在Objective-C中编写一个函数,例如下面的函数,它接受可变数量的参数,并将这些参数传递给+stringWithFormat:.我知道vsnprintf,但这意味着将NSString'格式'转换为C并返回(并且还意味着转换其中的格式化占位符......).
下面的代码编译,但当然不按我想要的行为:)
NSString *estr(NSString *format, ...) {
va_list args;
va_start(args, format);
NSString *s = [NSString stringWithFormat:format, args];
va_end(args);
return s;
}
Run Code Online (Sandbox Code Playgroud)
基本上:是否有方法的va_list友好版本+stringWithFormat:,还是可以写一个?
我有一个存储在unichar变量中的国际字符.此字符不是来自文件或网址.变量本身只存储一个无符号短(0xce91),它是UTF-8格式并转换为希腊大写字母'A'.我试图将该字符放入NSString变量但我失败了.
我尝试了两种不同的方法,其中两种都不成功:
unichar greekAlpha = 0xce91; //could have written greekAlpha = '?' instead.
NSString *theString = [NSString stringWithFormat:@"Greek Alpha: %C", greekAlpha];
Run Code Online (Sandbox Code Playgroud)
不好.我得到一些奇怪的汉字.作为旁注,这与英文字符完美配合.
然后我也尝试了这个:
NSString *byteString = [[NSString alloc] initWithBytes:&greekAlpha
length:sizeof(unichar)
encoding:NSUTF8StringEncoding];
Run Code Online (Sandbox Code Playgroud)
但这也不起作用.我显然做了一件非常糟糕的事,但我不知道是什么.有谁可以帮助我吗 ?谢谢!
有没有办法从像@"xxx =%@,yyy =%@"和NSArray对象这样的格式字符串创建一个新的NSString?
在NSSTring类中有许多方法,如:
- (id)initWithFormat:(NSString *)format arguments:(va_list)argList
- (id)initWithFormat:(NSString *)format locale:(id)locale arguments:(va_list)argList
+ (id)stringWithFormat:(NSString *)format, ...
Run Code Online (Sandbox Code Playgroud)
但是没有它们将NSArray作为参数,我找不到从NSArray创建va_list的方法......
有没有办法在调试时选择要在Visual Studio 2008单元测试项目中执行哪些TestMethod?我想调试一个特定的测试而不需要在每个调试会话期间执行其他TestMethods.
在Xcode中,Popover segue有两个名为Anchor和Passthrough的连接字段.它们用于什么?

是否有一个方法返回符合NSKeyValueCoding协议的对象的所有键?
沿着这条线的东西[object getPropertyKeys]将返回NSString对象的NSArray.它适用于任何符合KVC标准的对象.这种方法存在吗?到目前为止,我还没有找到任何搜索Apple文档的内容.
谢谢,G.
cocoa properties introspection objective-c key-value-observing
使用OCUnit,有没有办法测试委托协议?
我正在尝试这个,这不起作用.
-(void) testSomeObjDelegate {
SomeObj obj = [[SomeObj alloc] initWithDelegate:self];
[obj executeMethod];
}
-(void) someObjDelegateMethod {
//test something here
}
Run Code Online (Sandbox Code Playgroud)
我将尝试obj在不同的线程上调用该方法,并让测试进入睡眠状态,直到调用该委托.似乎应该有一种更简单的方法来测试它.
objective-c ×6
cocoa ×3
nsstring ×3
unit-testing ×2
.net ×1
api-design ×1
declaration ×1
definition ×1
delegates ×1
ios ×1
iphone ×1
nsarray ×1
ocunit ×1
properties ×1
ruby ×1
segue ×1
set ×1
storyboard ×1
unicode ×1
xcode ×1