最近都没有空更新了,不仅仅是因为学校的毕业设计和综合课程的东西,还有处理挺多的人际关系什么的东西。
不过,感觉,可能也没有什么人会看我的简书吧,不过还是要写点东西什么的。
今天先写点objective-c的一些笔记什么的,是最近准备找实习了,重新看书复习基础总结的一些东西
现在先写一小部分,持续更新····
首先在c不同的是,oc在输出语句有不一样:
NSLog相当于printf()
NSLog(@”hello Objective-C”);
//注意:
@是Objective-C在标准C语言基础上添加的特征之一,双引导的字符串前面有一个@,这表示引用的字符串应该作为Cocoa的NSString元素处理
NSLog(”are %dand %d different?%@”,5,5,boolString(are They Different));
注意%@:使用NSLog输出任何对象时,都会适用这个格式说明;
BOOL使用8位存储,YES定义为1,NO定义为0,大于1不为YES,跟标准C不同
不小心将一个长度于1字节的整型赋值给BOOL,则只截取八位;
Objective-C中1不等于1,绝对不要将BOOL值和YES比较;
跟各位同学说下,objective-c最大的特点,是面向对象的
使用间接从本地读取文件的例子
#import
int main(int argc,const char *argv[]){
if(argc ==1){
NSLog( “you need to provide a file name”);
return(1);
}
FILE *wordFile = fopen(argv[1],”r”);
char word[100];
whiel(fgets(word,100,wordFile)){
//fget调用会保留分开每一行的换行符,我们不需要,把它置换为0,表示字符串的结束
word[strlen(word)-1]=’\0’;
NSLog(@”%s is %dcharacters long”,word,strlen(word));
}
}
//运行./Word-Length-4/tmp/words.txt
若给了文件路径,那么argc会大于1,然后我们可以查询argv数组得到文件路径。Arg[1]保存着用户提供的文件名,argv[0]保存着程序名。
在XCode中编译此程序需要在XCode文件列表中展开Executables,双击程序名,在Arguments区域中添加启动参数;
这里可能有些同学会看不懂,没关系,接下来继续看,会陆续解释···
id
id是一种泛型,用于表示任何类的对象,id实际上是一个指针,指向其中的某个结构
[]
例:[super dealloc];
第一项是对象名,其余部分是要执行的操作;
Objective-C的OOP范例
@interface部分(一般作为.h单独书写,声明部分,当然,在内存管理的部分,在.h文件中会中#import,在.m文件中,会中@class,这样是为了避免重复引用倒入copy,这里迟点会作为解释)
@interface
Circle:NSObject//说明这是为Circle的新类定义的接口
{
ShapeColorfillColor;
ShapeRectbounds;
} //括号内的是Circle对象需要的各种数据成员
-(void)
setFilColor(ShapeColor)fillColor;//先行短线表明“这是新方法的声明”如果是“+”则表示是类方法也称工厂方法
-(void)setBounds(ShapeRect)bounds;
-(void)draw;
@end//circle
@implementation部分(一般为.m文件,实现部分)
@implementation Circle //@implementation是一个编译器指令,表明你将为某个类提供代码
-(void)setFillColor(ShapeColor)c //在这里如果继续使用参数名fillColor,就会隐藏fillColor实例变量,并且有警告
//我们已经定义了一个名为fillColor的实例变量,可以在该方法中引用该变量,如果使用相同的另一个变量,那么前一个会屏蔽
{
fillColor=c;
}
-(void)setBounds(ShapeRect)b
{
bounds=b;
}
-(void)draw
{
NSLog(“^.^”)
}
@end //Circle
可以在@implementation中定义那些在@interface中无相应声明的方法,可以把他们看做是私有方法,仅在类的实现中适用。
注:Objective-C不存在真正的私有方法,从而禁止其他代码调用。这是Objective-C动态本质的副作用。
一个很好记的就是@interface,是头.h的,脸的,脸就是写方法和属性声明的,那么@implementation,就是身体,是器官,给你写方法的,实习这些或那些方法的地方,这两个部分在oc里会有很多玩法,这种的那种的玩法,在后面会陆续说到,类似封装,继承,多态等····还有手动内存管理和自动内存管里,自动释放池等等,都是在在这里搞的····
中缀符(infix natation)
方法的名称和及其参数都是合在一起的
例如:
只有一个参数的:
[citcle setFillColor:kRedColor];
会有两个参数的:
[circlesetStringValue:@“hello there”color:KBlueColor];
有些同学可能会以为为什么方法名这么奇怪的,一个大写一个小写,这叫驼峰命名规范,在iOS的开发中,甚至很多企业开发中都是用这样的命名规范,但是我还是一个准程序员,外面是不是这样写,我不知道,但是,我师姐就是这样告诉我的,所以我就这样信了;
小弟文笔一般,希望大神们看见多加指点,笔记未完待续····