点语法

点语法的本质是方法调用

成员变量的作用域

@public : 在任何地方都能直接访问对象的成员变量

@private : 只能在当前类的对象方法中直接访问(@implementation中默认是@private)

      子类如果想访问通过setter  getter方法访问

@protected : 可以在当前类及其子类的对象方法中直接访问

       (@interface中默认是@protected)

@package : 只要处在同一个框架中,就能直接访问对象的成员变量

      一般用不到,直接用系统自带框架

@interface和@implementation中不能声明同名的成员变量

在@implementation中也能写成员变量,不用声明,可直接写set get方法

@implementation  Class : NSObject

{

int _a;// 默认是私有

}

- (void)setA:(int)a

  _a = a;

-(int)a

{

  return  _a;

}

@end

@property 可以自动生成某个成员变量的setter和getter的声明

@interface  Class : NSObject

{

int  _a;

double  _b;

}

@property int a;

@property double b;

@end

@synthesize:自动生成a的setter和getter的实现并且访问_a这个成员变量

会访问_a这个成员变量,如果这个成员变量不存在,就自动生成@private类型的_a变量

@implementation Class

@synthesize  a = _a;

@synthesize  b = _b;

@end

Xcode 4.4版本后,@property就独揽了@synthesize功能,就是说@property可以同时声成setter和getter的声明和实现

默认情况下 setter 和getter方法的实现,会访问下划线_开头的成员变量

id类型

id:万能指针,能指向/操作任何OC对象  id ==NSObject *

注意id后面不要加*

 

构造方法:用来初始化对象的方法,是个对象方法

重写构造方法目的:让创建出来的对象里的成员变量有一些固定的值

重写init方法:

// 1.一定要调用super的init方法:初始化父类中声明的一些成员变量和其他属性

例  - (id)init

{

    self = [super init]; // 当前对象 self

// 2.如果对象初始化成功,才有必要进行接下来的初始化

    if (self != nil)

    {

      _age = 10;

    }

    return self;

}

在@implementaion  类名

- (id)init

{

  if (self = [super init])

  {

    _age = 10;

  }

  return self

}

@end中重写

自定义构造方法:

规范:

1.一定是对象方法,一定以 _ 开头

2.返回值id类型

3.方法名以initWith开头

1.声明在@interface  中 @end上面

例 @interface Person :NSObject

@property NSString *_name;

- (id)initWithName:(NSString *)name;

@end

2.实现在@implementation 中 @end 上面

例 @implementation Person

- (id)initWithName:(NSString *)name

{

  if (self = [super init])

  {

    _name = name;

  }

    return self;

}

@end

main.m文件中:

int main()

{

  Person *p = [[Person alloc] initWithName:@"rose"]

  return 0;

}

Objective-C( 语法一)的更多相关文章

  1. 初学Objective - C语法之代码块(block)

    一.block声明 1.无参数,无返回值: void (^sayHi)(); 2.有参数,有返回值: NSInteger (^operateOfValue)(NSInteger num); block ...

  2. [转] 从 C 到 Objective C 入门1

    转自: http://blog.liuhongwei.cn/iphone/objective-c/ 进军iPhone开发,最大的难点之一就是怪异的Objective C语法了.不过,了解之后才发现,原 ...

  3. iOS开发——语法篇OC篇&高级语法精讲二

    Objective高级语法精讲二 Objective-C是基于C语言加入了面向对象特性和消息转发机制的动态语言,这意味着它不仅需要一个编译器,还需要Runtime系统来动态创建类和对象,进行消息发送和 ...

  4. Windows下编译objective-C

    Windows下编译objective-C 2011-08-31 14:32 630人阅读 评论(0) 收藏 举报 windowscocoa工具objective clibraryxcode   目录 ...

  5. ios学习笔记之2天来总结

    学了2天,小结下. ios的基本代码执行流程: 与java的基本异同: 异: 1.基类:java中Object是所有类的父类,而objective-c的根类为NSObject 2.默认访问类型:jav ...

  6. Pentaho BI server 中 CCC table Component 的使用小技巧

    我使用的版本 Pentaho BI Server 5.3.0.0.213 CDE/CDF/CDA/CCC 15.04.16 stable   Q: 如何设置表格中各种提示文字的语言(默认为英语)? C ...

  7. OC中protocol、category和继承的关系--转

    开放封闭原则(OCP)就是,“对扩展开放,对更改封闭”.是所有面向对象设计的一个核心宗旨.感兴趣的可以看百度百科的一些解释:http://baike.baidu.com/view/2493421.ht ...

  8. Automake

    Automake是用来根据Makefile.am生成Makefile.in的工具 标准Makefile目标 'make all' Build programs, libraries, document ...

  9. Objective - C中属性和点语法的使用

    一.属性        属性是Objective—C 2.0定义的语法,为实例变量提供了setter.getter方法的默认实现能在一定程度上简化程序代码,并且增强实例变量的访问安全性         ...

  10. iOS开发核心语言Objective C —— 面向对象思维、setter和getter方法及点语法

    本分享是面向有意向从事iOS开发的伙伴们.或者已经从事了iOS的开发人员.假设您对iOS开发有极高的兴趣,能够与我一起探讨iOS开发.一起学习,共同进步.假设您是零基础,建议您先翻阅我之前分享的iOS ...

随机推荐

  1. poj 2398 (叉积+二分)

    http://poj.org/problem?id=2398 Toy Storage Time Limit: 1000MS   Memory Limit: 65536K Total Submissio ...

  2. eclipse svn异常:RA layer request failed 的解决方案

    这几天svn总是出问题,网上搜了好多资料,今天才真正找到解决办法. RA layer request failedsvn: OPTIONS of 'https://192.168.0.104/svn/ ...

  3. python_way ,day1 编译安装python3、基础及流程控制

    本节内容: 1,Python介绍发展史 2,安装 3,Hello World 4,程序 5,变量,字符编码 6,用户输入 7,模块初识 一.python介绍 python的创始人为吉多·范罗苏姆(Gu ...

  4. 转 基于Quick-cocos2dx 2.2.3 的动态更新实现完整篇。(打包,服务器接口,模块自更新

    1,如何设计更新服务器接口. 2,不改变原框架的代码的情况下如何实现更新,并且可以实现精确的进度. 3,如何按照版本打包. 4,如何跨n个小版本更新. 5,版本回滚. 6,如何更新你的自动更新模块和f ...

  5. Codeforces 713D Animals and Puzzle

    题意:一个n*m的01矩阵,Q个询问,每次询问一个矩形区域内,最大的全1正方形的边长是多少? 题解:dp[0][0][i][j]表示以(i, j)为右下角的正方形的最长边长.RMQ后,二分答案即可. ...

  6. mysql 选择性高

    选择性高是指能够过滤掉更多不需要的记录.举例来说,在一个公司里,使用性别只能过滤掉一半的人,而使用姓名一般可以过滤掉99%以上的人,因为会有重名情况,而使用员工号,选出一个,其他的全部过滤掉.也就是说 ...

  7. Handler详解系列(四)——利用Handler在主线程与子线程之间互发消息,handler详解

    MainActivity如下: package cc.c; import android.app.Activity; import android.os.Bundle; import android. ...

  8. CentOS查看CPU、内存、网络流量和磁盘 I/O【转载,待整理】

    http://blog.csdn.net/zbyufei/article/details/6413273

  9. tinyXml直接解析XML字符串

    一直都用tinyxml直接LoadFile来解析XML,发现原来也可以直接解析XML字符串. XML文件: <?xml version=\"1.0\" encoding=\& ...

  10. karma+angular

    下面的介绍以karma能正常运行为前提,看karma系列文章:http://www.cnblogs.com/laixiangran/tag/Karma/ 目录结构 步骤 安装 npm install ...