`

OC基础语法学习笔记 总结

 
阅读更多
Objective-C语法:
一:对象声明语法:类名 * 对象名 = [[类名 alloc] init]
   [对象名 release] //释放对象的实例
   注:alloc是NSObject的类方法,init是实现类的初始化方法
二:类
   @interface MyClass:NSObject //接口
   {
      int count;
      id data;
      NSString * name;//变量
   }
   - (NSString *) getName;//方法
   - (void)setName:(NSString *)name
   + (float)classMethod:(float *)Method1 keyword:(int) Method2
   @end
   @implementation MyClass //实现
   - (NSString)getName
   {
      return @"";
   }
   @end
三:方法
声明:
+/-(返回类型)方法名:(参数类型1)参数名1 参数说明关键字:(参数类型2)参数名2 (...)...

- 类实例的方法
1-[self 方法名]
2-MyClass * myclass = [[MyClass alloc] init];
  [myclass setName:@"name"];
+ 类的方法
  [MyClass classMethod:12.5 keyword:1]

Objective-C基础语法:
1--文件类型
.h 头文件:类,类型,方法,结构体等声明
.m 实现文件:OC 和 C的代码
.mm 实现文件:C++和OC的代码
#import 确保头文件不被重复引用
2--字符串
@"string";
%d 十进制整数
%f 十进制小数(浮点型)
%c 字符
%s 字符串
%@ OC字符串
3--日志打印
printf("log message");
NSLog(@"log message");
4--数据类型和表达式
C语言基本数据类型:int float double char
其它数据类型:Long Longlong Short Unsigned(无符号型0--255) signed(有符号类型-128--127)
OC数据类型:
id 标识任何类的对象
BOOL boolean(YES/NO)
NIL NULL
SEL
SEL oneMethod=@selector(render);//@selector 得到一个方法的指针
[oneObject performSelector:oneMethod]
// 传入名为render的方法,使得oneMethod成为指向render方法的指针,oneObject是实例化的对象
// 通过呼出performselector来执行render方法。performSelector是NSObject类的实现方法。
YES
NO
5--循环
for(n=1;n<11;n=n+1){}
while(n <= 5){}
do{}while(n != 1)
6--条件
if(){}else{};
switch(){case ...}
XX?SS:CC
7--内存管理(计数器半自动化管理)
alloc +1
release -1
copy 1 重新生成一个新的实例
retain +1
autorelease 再pool栈顶添加此对象
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

[pool drain]
8--继承
@interface subClassName:superClassName
-(BOOL)isKindOfClass:class-object // 判断对象是否是某一种类的实例(包括其父类)
-(BOOL)isMenberOFClass:class-object // 判断对象是否是某一种类的实例(不包括其父类)
-(BOOL)respondsToSelector:select // 判断对象是否实现某个方法
+(BOOL)instancesRespondToSelector:selector //判断类的实例是否实现某个方法
+(BOOL)isSubclassOfClass:class-object //判断一个类是否是某个类的子类
-(id)performSelector:selector // 让对象呼叫指定的方法
-(id)performSelector:selector withObject:object // 让对象呼叫指定的方法并带有参数
A * a = [[A alloc] init];
if([a isKindOfClass:[A class]] == YES){}
9--类别和协议
类别:@interface myClass(类别名) 类别和继承类似,但类别只能添加新的方法不能添加任何实例变量
协议:类似于Java的interface
协议的声明:
@protocol protocolName
@optional // 默认实现的方法
-(void)method1
@required // 必须实现的方法
-(void)method2
@end
协议的使用:
@interface myClass:superClass<protocol1,protocol2, ...>
协议实现对象委托:
@protocol proA
-proMethod1;
-proMethod2;
@end

@interface myClassA:NSObject
{
// 代理变量
id _delegate;
}
// 代理方法
@property(nonatomic,retain) id _delegate;
-(void)callDelegateMethod;
@end
@implement myClassA
@synthesize -delegate;
-(void)callDelegateMehtod
{
[_delegate proMethod1];
[_delegate proMethod2];
}
@end

@interface myClassB:NSObject<proA>
-(void)testDelegate;
@end
@implement myClassB
// 协议(接口)方法实现
-(void)testDelegate
{
myClass * myA = [[myClass alloc] init];
// 设置代理
_delegate self;
[myA callDelegateMethod];
}
@end
10--属性
声明:@property (修饰) 类型 属性名
@property(nonatomic,retain) id _delegate;
实现:@synthesize 属性名
@synthesize -delegate;
修饰的类型:
readwrite: 变量可读写
readonly: 变量只可以读,需要手动添加setter
assign: 变量可以直接赋值,内存引用计数值不变
retain: 对象进行一次引用,内存引用计数值+1
copy: 复制一个新的对象,内存引用计数值为1
nonatomic: 默认为atomic 在多线程是变量互斥
11-快速枚举
NSArray * array = [NSArray arrayWithObjects:@"ome",@"two",@"three",nil];
NSDictionary
NSManagedObjectModel
NSSet
----------------------------------
for(NSString * element in array){}
----------------------------------
NSEnumerator * enu = [array reverseObjectEnumerator];
for(NSString * element =[enu nextObject])
{
if([element isEqualToString:@"three"])
{
break;
}
}
---------------------------------


OS中OC是很重要的语言,通过看《Objective C Programming》,能让我对OC有个大概的了解。为了加深印象,特于此加以总结。

OC是源于SmallTalk的,起源甚至比C++还早。其直接父系语言为C语言。
OC通过@interface-@end以及@implementation-@end来实现类声明和定义。
OC中类一般至少继承与Object类
OC中所有的类对象必须动态申请,也就是说没有局部变量这么一说。
OC中类没有所谓的构造函数和析构函数,所以如果一个类中有其他类的数据(动态申请的),那么释放内存就不能依赖析构函数,但可以采用重写-(id) free来实现类中所有数据释放。
OC中成员变量也有三种访问权限,@public,@protected,@private。但默认的是@protected,而C++中默认是private。
OC中成员函数只有两种,一种是实例函数,一种是类函数。实例函数就是C++中的Public函数,类函数就是public中的static函数。
OC中成员函数如果要接受多个参数,则需要每个参数前加冒号(虽然教科书上说参数后加冒号,但就我看来说成参数前加更能让C++Programmer理解)。例如-( int ) Set : ( int ) A : ( int ) B ;每个形参前还可以加一个参数名,并成为函数名的一部分。例如-( int ) Set : ( int ) A  And :  ( int ) B;在使用时[ classTest Set : 10 And : 12 ]; 起初看起来确实不习惯。。。
OC中还多了一个id类型,通过测试,id就是指针。32位机器上为4字节。
OC中多了很多运行时态的机制,其中id的特殊用途,可以通过id类型的变量,调用不同类的同名函数,即使这些类没有任何关系。
OC可以给已类添加新的函数。@interface classExist( NewMethodGroup )-@end,@implementation classExist( NewMethodGroup )-@end。
OC可以将让某类A,代替某类B。通过poseAs关键字。例如:[FractionB poseAs: [Fraction class]];此后使用Fraction类时,就转换成使用FractionB了。
OC还有protocol概念。protocol实际是一组函数,支持改协议的类都应重写这些函数。通过@protocol-@end来声明protocol。类中通过<protocol1,protocol2,...>来表示支持某个协议。如@interface A : Object < NSCopying, NSTransform >-@end表明类A继承与Object类,并支持两个协议(NSCopying, NSTransform )。

OC最后总结,其类实现以c为基础。@interface classTest - @end是相当于一组宏,帮你将类的所有成员变量声明组织为一个结构体,成员函数实际就是普通函数,是在原来成员函数基础上,修改函数名称,添加结构体指针到第一个参数。id类型实际也就是指针。难怪OC的类看起来不像C的一般语法,原因就是其源自C的一般语法,采用新的类脚本的方式,实现的类功能。
分享到:
评论

相关推荐

    Objective-C学习笔记(一)OC基础.md

    3. OC基础语法,对比了OC和C语言的一些区别和共同点。 4. 面向过程与面向对象的概念,并解释了使用面向对象思维解决问题的好处。 5. 类与对象的概念,如何定义一个类,如何创建对象并访问对象的属性。 6. 方法的声明...

    OC学习笔记合集

    以上内容仅为OC学习笔记合集中的部分知识点概述,深入学习将涵盖更多主题,如Delegation、Design Patterns、网络编程、动画效果、Core Animation等。通过不断实践和探索,你将能够熟练掌握Objective-C,并能构建出...

    iOS史上最全的OC笔记

    这份"iOS史上最全的OC笔记"无疑是学习OC语言的重要参考资料。以下是对笔记内容的详细解读: 1. **基础概念**:OC是C语言的超集,它引入了消息传递机制和动态类型,使得代码更具灵活性。笔记会详细解释类、对象、...

    无限互联_IOS视频教程_OC教程_课件、源码

    "OC教程"表明教程内容是关于Objective-C的基础知识和高级特性,而"课件、源码"则意味着学习者不仅可以观看讲解视频,还能通过实际的代码示例进行实践操作,这将极大地提升学习效果和动手能力。 【标签】:“IOS教程...

    zemax宏学习笔记1

    Zemax宏学习笔记1 Zemax是一种光学设计软件,它提供了强大的宏功能,用户可以通过编写宏脚本来自动化设计过程,提高工作效率。下面是Zemax宏学习笔记的相关知识点: 一、基本概念 * Zemax宏语言使用类似BASIC的...

    objective-c学习笔记

    总的来说,“Objective-C学习笔记”应该覆盖了从基础语法到实际应用的全方位教程,适合初学者系统学习Objective-C,并通过实践加深理解。通过深入学习,开发者可以掌握开发苹果平台应用程序所需的关键技能。

    ios学习笔记

    本文将深入探讨从标题和描述中提及的iOS学习笔记,特别是关于OC面向对象编程的一些关键概念和实践。 面向对象编程(OOP)是OC的核心,它强调通过封装、继承和多态来组织代码。在OC中,类(Class)是对象的蓝图,...

    千锋OC源码,自学iphone开发

    通过解压并打开这些文件,学习者能够跟随教程逐步学习,从基础的OC语法到复杂的iOS框架应用,一步步构建自己的iPhone应用。 在学习过程中,首先需要熟悉Xcode IDE,它是苹果官方推荐的iOS开发工具。然后,通过阅读...

    unity笔记 全阶段

    【Unity 全阶段学习笔记】 Unity 是一款强大的跨平台游戏引擎,被广泛应用于游戏开发、虚拟现实、增强现实以及各种互动体验的制作。本笔记旨在为初学者提供一个全面的Unity学习路径,从基础到进阶,涵盖环境搭建、...

    iOS学习笔记

    以下是对标题和描述中提及的iOS学习笔记的关键知识点的详细解释: 1. **类的声明和实现**: - OC中的类由`.h`和`.m`两个文件组成,`.h`文件负责声明属性和方法,`.m`文件实现这些声明。 2. **继承与Foundation...

    (OC)商品详情(Html)(主流)(代码+视频讲解).zip

    1. **Objective-C基础**:学习者需要了解OC的基本语法,如类的定义、对象的创建、消息传递机制等。 2. **移动端App开发**:掌握iOS或macOS平台的开发环境,如Xcode的使用,理解App的生命周期,以及如何进行界面布局...

    Objective-C的入门学习笔记

    对于一门语言得学习,个人觉得最主要得就是其语法格式和那些关键字。 因为对于基本现在大多数得语言,每种语言都是一种符合人思维得方式来与计算机交流。 因此,其实每种语言中定义或是封装好得基础类和类库,其实都...

    iOS开发教程(大神笔记)

    在iOS开发的学习过程中,理解和运用Objective-C语言进行编程是基础,掌握了OC之后,开发者可以开始深入学习iOS SDK提供的各种框架与API,从而能够开发出功能丰富、交互良好且性能优化的应用程序。随着技术的不断更新...

    Objective-C基础教程第二版

    #### 二、Objective-C基础语法 ##### 2.1 变量与数据类型 - **基本数据类型**:如int、float、char等。 - **Objective-C特有的数据类型**: - `id`:表示任何Objective-C对象。 - `@interface`、`@implementation...

    Styf学习笔记

    【Objective-C 知识点详解】 Objective-C,简称OC,是苹果公司开发的面向对象的编程语言,它是C语言的超集,具有...Styf的学习笔记可能涵盖这些知识点的详细解释和示例,对于深入理解Objective-C编程大有裨益。

    Objective-C&UIKit自学笔记

    在深入学习时,还需要了解如何使用UIKit创建视图、控制器、事件处理等,以及更高级的主题,如内存管理策略ARC(Automatic Reference Counting)、GCD(Grand Central Dispatch)并行处理、Block语法等。

    js菜鸟笔记之图像幻灯动画_ekom.cn

    该项目名为“js菜鸟笔记之图像幻灯动画”,是一篇面向JavaScript初学者的学习笔记。其主要目的是通过创建一个简单的图像幻灯片动画来帮助学习者理解基本的HTML、CSS和JavaScript语法,并掌握如何使用这些技术制作...

    iOS开发教程(大神原创笔记)

    ### iOS开发教程(大神原创笔记)核心知识点详解 #### 一、Unix相关知识点 ...通过以上知识点的学习,开发者能够更好地理解和掌握Objective-C的基本语法和面向对象编程的概念,为后续的iOS应用开发打下坚实的基础。

    objective-c的总结

    Objective-C是一种强大的面向对象编程语言,它是Apple的iOS和macOS操作系统的核心开发语言。...通过阅读提供的课程总结、笔记和相关材料,你将进一步巩固这些知识,并能够更好地运用到实际项目中。

Global site tag (gtag.js) - Google Analytics