原文网址:http://blog.csdn.net/zengraoli/article/details/8993466

类型:

NSString

NSInteger

NSLong控制台输出

NSObject:对象

比较两个对象是否相等:

  1. NSObject *object1 = [[NSObject alloc] init];
  2. NSObject *object2 = obejct1;
  3. if([object isEqual:object2])
  4. {
  5. NSLong(@"is equal");
  6. }
  7. else
  8. {
  9. NSLong(@"is not equal");
  10. }

判断一个string是否为空:

  1. NSString *shortString  = @"HelloWorld";
  2. if([shortString lengtg] == 0)
  3. {
  4. NSLong(@"is empty string");
  5. }
  6. else
  7. {
  8. NSLong(@"is not empty string ");
  9. }

循环结构,比如for:

  1. int increment = 0;
  2. for (increment = 0; increment < 100; increment++)
  3. {
  4. NSLog(increment++);
  5. }

-(void) method : (int) arguments;

-为方法类型 +表示类方法

-(id) initWithAge:(int) _age identify:(int)_identify

方法名称为initWithAge,第一个参数是(int) _age,第二个参数是(int)_identify

identify其实是对_identify的一个说明,initWithAge对_age一个说明

方法的调用:

1.[类名或对象名 方法名];

2.对象名.方法名

  1. NSString *s;
  2. s = [[NSString alloc] initWithString:@Hello iphone4S];
  3. Person *person = [Person alloc];
  4. person = [person init];
  5. -(id) initWithAge:(int)_age identify:(int) _identify
  6. {
  7. if(self = [super init])
  8. {
  9. age = _age;
  10. identify = _identify;
  11. }
  12. return self;
  13. }
  14. NSLog(@"self class is : %@", [self class]);

@class 和import的区别

@class只是用到了声明,如果需要用到这个class里面的方法,还需要import,通常在.h文件里面只需要@class,.m文件里面需要import

oc里面不需要get说明,直接使用:

多个成员变量可以不写get和set,使用property(list) names

@implementation Person

@synthesize myNumber

@end

调用的时候:

NSLog(@"Person number : %d",[person myNumber]);

还有个@property(nonatomic) int number

atomic是多线程的一个保护技术

重载:

定义一个同名的新方法,新方法必须具有相同的返回类型,并且参数的个数和重载的方法相同

class里面的权限控制:

同时也具有public protected private,oc也是单继承

成员变量的new是这样的:

  1. Person *person = [[Person alloc] init];

但是对应的需要在return之前使用:

  1. [pool drain]或者[pool release];

drain用于清除pool中对象,release用来释放内存

比如可以这样[person release]

方法调用:

[实例 方法]

[类名 方法]

完整的方法调用格式为:

[接收方 名字1:参数1 名字2: 参数2 名字3: 参数3 ...]

oc运行在一个方法调用中嵌套另一个方法调用,比如:

  1. [NSString stringWithFormat:[test format]];

另外还有一单,self类似this,可以使用self调用本类中的方法:

  1. -(BOOL) isQualified
  2. {
  3. return ([self age] > 21);
  4. }

输入输出,和c差不多,也有scanf,输出用NSLog(),占位符前面需要加上@,如果是oc内置类型,比如NSString需要这样:%@

id类型和class的简单使用:

typedef:

和c是一样的

typedef int myInt

myInt age;

BOOL类型

YES、NO

选择器SEL

P44 用到再说

创建一个类

静态成员变量与类方法

static int intY;

+(int) staticIntY

就像上面所写的,需要使用“+”来声明类方法

变量的存储类型:

1、auto、自动局部变量,是缺省设置

2、const

3、volatile,这个修饰符刚好和const相反,它明确地告诉编译器,该变量的值 会发生改变,他用来修饰被不同线程访问和修改的变量

定义@property修饰符来设置成员变量的get和set

修饰符可以是:

实现一个例子P119

MyClass.h:

  1. //
  2. //  MyClass.h
  3. //  test
  4. //
  5. //  Created by Dawn on 13-5-27.
  6. //  Copyright (c) 2013年 zeng. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. @interface MyClass : NSObject{
  10. int intValue;
  11. float floatValue;
  12. }
  13. @property int _intValue;
  14. @property (copy) NSString *name;
  15. @property float floatValue;
  16. @property (readonly, getter = getANickname) NSString *nickname;
  17. @end

MyClass.m:

  1. //
  2. //  MyClass.m
  3. //  test
  4. //
  5. //  Created by Dawn on 13-5-27.
  6. //  Copyright (c) 2013年 zeng. All rights reserved.
  7. //
  8. #import "MyClass.h"
  9. @implementation MyClass
  10. @synthesize _intValue = intValue, name;
  11. // 这条语句不是必须的
  12. @dynamic floatValue;
  13. -(float) floatValue{
  14. return floatValue;
  15. }
  16. -(void)setFloatValue:(float)aValue{
  17. floatValue = aValue;
  18. }
  19. -(NSString *)getANickname{
  20. return @"Lee";
  21. }
  22. @end

main.m:

  1. //
  2. //  main.m
  3. //  test
  4. //
  5. //  Created by Zeng on 13-5-24.
  6. //  Copyright (c) 2013年 zeng. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import "YourClub.h"
  10. #import "Membership.h"
  11. #import "MyClass.h"
  12. int main(int argc, const char * argv[])
  13. {
  14. NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
  15. MyClass *class1 = [[MyClass alloc] init];
  16. [class1 set_intValue:1];
  17. [class1 setName:@"Sam"];
  18. [class1 setFloatValue:1.1f];
  19. NSLog(@"intValue is %i, name is %@, floatValue is %g, nickname is %@", [class1 _intValue], [class1 name], [class1 floatValue], [class1 getANickname]);
  20. [class1 release];
  21. [pool release];
  22. return 0;
  23. }

在object-c 2.0中,在.h文件中使用@property来标识属性(一般是实例变量);在实现文件中(也就是扩展名为.m的文件),使用@synthesize标识所声明的属性,让系统自动生成设置方法和获取方法。

声明一个多参数的方法:

MyClass.h:

  1. //
  2. //  MyClass.h
  3. //  test
  4. //
  5. //  Created by Dawn on 13-5-27.
  6. //  Copyright (c) 2013年 zeng. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. @interface MyClass : NSObject{
  10. NSString *name;
  11. int age;
  12. }
  13. @property (nonatomic, copy) NSString *name;
  14. @property (nonatomic) int age;
  15. -(void) setName:(NSString *)theName andSetTheAge: (int) theAge;
  16. @end

MyClass.m:

  1. //
  2. //  MyClass.m
  3. //  test
  4. //
  5. //  Created by Dawn on 13-5-27.
  6. //  Copyright (c) 2013年 zeng. All rights reserved.
  7. //
  8. #import "MyClass.h"
  9. @implementation MyClass
  10. @synthesize name;
  11. @synthesize age;
  12. -(void) setName:(NSString *)theName andSetTheAge: (int) theAge{
  13. [self setName:theName];
  14. [self setAge:theAge];
  15. }
  16. @end

main.m:

    1. //
    2. //  main.m
    3. //  test
    4. //
    5. //  Created by Zeng on 13-5-24.
    6. //  Copyright (c) 2013年 zeng. All rights reserved.
    7. //
    8. #import <Foundation/Foundation.h>
    9. #import "YourClub.h"
    10. #import "Membership.h"
    11. #import "MyClass.h"
    12. int main(int argc, const char * argv[])
    13. {
    14. NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    15. MyClass *class1 = [[MyClass alloc] init];
    16. [class1 setName:@"zengraoli" andSetTheAge:36];
    17. NSLog(@"name is %@, age is %i", [class1 name], [class1 age]);
    18. [pool release];
    19. return 0;
    20. }

【转】话说我打算一天学完object c语法,系列1--------来自书Objective-c程序设计的更多相关文章

  1. 简明易懂,将细节隐藏,面向新手树立web开发概念——学完Java基础语法,超快速上手springboot+mybatiJavaWeb开发

    简明易懂,将细节隐藏,面向新手树立web开发概念 --学完Java基础语法,超快速上手JavaWeb开发 Web本质(先忽视各种协议) Web应用可以理解为浏览器和服务器之间的交互. 我们可以看一个简 ...

  2. Golang入门(2):一天学完GO的基本语法

    摘要 在配置好环境之后,要研究的就是这个语言的语法了.在这篇文章中,作者希望可以简单的介绍一下Golang的各种语法,并与C和Java作一些简单的对比以加深记忆.因为这篇文章只是入门Golang的第二 ...

  3. 在w3cschool学完html,css,javascript,jquery以后,还是不会做前端怎么办?

    w3cschool是一个非盈利性的在线技术学习网站,提供按W3C标准编写的基础教程.完整的看完w3cschool上面的手册,可以基本掌握编程语法.基础性的东西通常都会比较零散,因此,在学习一段时间后, ...

  4. 7天学完Java基础之0/7

    笔记-7天学完Java基础之0/7 1.常用命令提示符(cmd) 启动:Win+R,输入cmd​

  5. 学完微型服务器(Tomcat)对其工作流程的理解,自己着手写个简单的tomcat

    学完微型服务器(Tomcat)对其工作流程的理解,自己着手写个简单的tomcat 2019-05-09   19:28:42 注:项目(MyEclipse)创建的时候选择:Web Service Pr ...

  6. 零基础学完Python的7大就业方向,哪个赚钱多?

    “ 我想学 Python,但是学完 Python 后都能干啥 ?” “ 现在学 Python,哪个方向最简单?哪个方向最吃香 ?” “ …… ” 相信不少 Python 的初学者,都会遇到上面的这些问 ...

  7. Golang入门(3):一天学完GO的进阶语法

    摘要 在上一篇文章中,我们聊了聊Golang中的一些基础的语法,如变量的定义.条件语句.循环语句等等.他们和其他语言很相似,我们只需要看一看它们之间的区别,就差不多可以掌握了,所以作者称它们为&quo ...

  8. 0基础如何更快速入门Linux系统?学完Linux有哪些就业方向?

    Linux系统是使用Linux内核及开源自由软件组成的一套操作系统,是一种类UNIX系统,其内核在1991年10月5日由林纳斯·托瓦兹首次发布. 它的主要特性:Linux文件一切皆文件.完全开源免费. ...

  9. 3分钟学完Python,直接从入门到精通

    作为帅气小编,我已经把python一些模块的甩在这儿了qwq,只要你拿到这些干货,包你玩转python,直接冲向"大佬"的段位,如果已经学了C或者C++或者说如果你需要你的一段关键 ...

随机推荐

  1. PE文件结构详解(四)PE导入表

    PE文件结构详解(二)可执行文件头的最后展示了一个数组,PE文件结构详解(三)PE导出表中解释了其中第一项的格式,本篇文章来揭示这个数组中的第二项:IMAGE_DIRECTORY_ENTRY_IMPO ...

  2. Fragment (一)

      1,简介 Fragement(碎片)允许将Activity拆分成多个完全独立封装的可重用组件,每个组件有它自己的生命周期和UI布局,由此可见,Fragement依赖于Activity,它的生命周期 ...

  3. hdu 4447 Yuanfang, What Do You Think?

    思路: 这题有个结论也可以自己归纳: 对于给定的n,其约数用pi表示 T(n)=T(p1)T(p2)……T(pn)T(n') 其中T(n')是这个式子所独有的也就是 T(n')=(x^n-1)/T(p ...

  4. 关于Model层中Datetime Datetime? 默认值的问题

    DateTime 和 DateTime?前者不允许为空,会有默认值,而DateTime?可以为Null 其他数值型同理!

  5. Codeforces D546:Soldier and Number Game

    题目链接 输入t对数 a, b 求(b,a]内的每个数拆成素因子的个数和 这里每个数都可以写成素数的乘积,可以写成几个素数的和就有几个素因子,这里求的是(b,a]内的素因子和 思路: 素数的素因子个数 ...

  6. JavaWeb项目开发案例精粹-第3章在线考试系统-001设计

    1. 2. 3. 4. # MySQL-Front 5.0 (Build 1.0) /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE */; /*!40101 SET SQL ...

  7. AE数据加载

    1. 数据加载问题: 任何系统都离不开数据的加载,下边就AE中几种常用的数据加载做一个列举.以便查阅: 1.加载个人数据库 个人数据库是保存在Access中的数据库.其加载方式有两种:通过名字和通过属 ...

  8. Java多线程3:Thread中start()和run()的区别

    原文:http://www.cnblogs.com/skywang12345/p/3479083.html start() 和 run()的区别说明start():它的作用是启动一个新线程,新线程会执 ...

  9. C++:调整基类成员在派生类中的访问属性的其他方法(同名成员和访问声明)

    4.3 调整基类成员在派生类中的访问属性的其他方法 4.3.1 同名函数 在定义派生类的时候,C++语言允许在派生类中说明的成员与基类中的成员名字相同,也就是 说,派生类可以重新说明与基类成员同名的成 ...

  10. 机器人学 —— 轨迹规划(Introduction)

    轨迹规划属于机器人学中的上层问题,其主要目标是计划机器人从A移动到B并避开所有障碍的路线. 1.轨迹计划的对象 轨迹规划的对象是map,机器人通过SLAM获得地map后,则可在地图中选定任意两点进行轨 ...