- Objective-C 中有许多不定参数函数,像 NSLog(format, arg1, arg2),还有字符串或数组在构造时所用的 [NSString stringWithFormat: format, arg1, arg2, arg3],它们的方法原型分别是:
FOUNDATION_EXPORT void NSLog(NSString *format, ...) NS_FORMAT_FUNCTION(1,2);
+ (id)stringWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2);
应该去掉后面的 NS_FORMAT_FUNCTION(1,2) 来看,否来会干扰到思维。我们现在的例子还不需要这么写,至于 NS_FORMAT_FUNCTION(1,2) 的功用为何,我有时间还得好生看下。OK, 看多了 Apple 的那些可变参函数,可能反而令你感到费解,还不如来试个实际的例子:Read More1- (void)foo:(NSString *)format, ... 2{ 3 va_list args; 4 va_start(args, format); 5 NSString *str = [[NSString alloc] initWithFormat:format arguments:args]; 6 va_end(args); 7 8 printf([str UTF8String]); 9 10 [str release]; 11} 12 13- (IBAction) doo: (UIButton*) sender 14{ 15 //须留意不定参函数的调用格式,逗号分隔的序列,应该它们整体是作为函数的一个参数传入 16 [self foo : @"My name %@, %@", @"Unmi", @"Yes"]; 17} - 话说在 Objective-C 里声明指针变量时,星号(*) 该放到哪个位置,是紧贴变量类型,紧贴变量名还是放它们之间两边用空格,或者全挤在一起?到底还是在思考 C/C++ 中指针变量的声明风格,因为 Objective-C 是 C 的超集。
纯粹讲 Objective-C 的代码风格,我觉得 Google 的 Google Objective-C Style Guide 非常有指导意义。转回来看 Objective-C 声明指针变量时什么风格好些,下面四种都符合语法:。看显然,第四种风格是最不好看的,就像有人写 SQL 喜欢 “select*from table1" 一样 Read More1 NSString * name1 = @"Unmi"; //1. * 与变量类型与变量名之间都有空格<br/> 2 NSString* name2 = @"Unmi"; //2. * 紧挨变量类型,我推荐这种<br/> 3 NSString *name3 = @"Unmi"; //3. * 紧挨变量名<br/> 4 NSString*name4 = @"Unmi"; //4. * 变量类型、*、变量名紧挨在一起<br/> 5 NSLog(@"%@, %@, %@, %@", name1, name2, name3, name4); - 本文为阅读文档:Objective-C 培训资料 的一些摘要,在此记录,以备回顾。
#define nil NULL
bool型与c/c++是一样的,非0为 TRUE/YES, 0 为 FALSE/NO, 用 if(flag==YES) 就要注意了,此时 YES 就是 1,不过你直接用 if(flag) ..... 来判断就只要不是 0 就成立。
#import 和 c/C++ 的 include 一样也有 <> 和 "" 两种查找方式。但是它不怕重复引入。
NSLog() 会自动在输出后加 \n,相当于 System.out.println().
Objective-C 的对象需要直接或间接的继承自 NSObject。Objective-C 的 @interface 相当 java 的 class,而 @protocol 才是 Java 的 interface。类声明的基本方式如下:
@interface <#class#> : <#superclass#>
{
<#ivars#>
}
<#methods#>
@end Read More