【转】话说我打算一天学完object c语法,系列1--------来自书Objective-c程序设计
原文网址:http://blog.csdn.net/zengraoli/article/details/8993466
类型:
NSString
NSInteger
NSLong控制台输出
NSObject:对象
比较两个对象是否相等:
- NSObject *object1 = [[NSObject alloc] init];
- NSObject *object2 = obejct1;
- if([object isEqual:object2])
- {
- NSLong(@"is equal");
- }
- else
- {
- NSLong(@"is not equal");
- }
判断一个string是否为空:
- NSString *shortString = @"HelloWorld";
- if([shortString lengtg] == 0)
- {
- NSLong(@"is empty string");
- }
- else
- {
- NSLong(@"is not empty string ");
- }
循环结构,比如for:
- int increment = 0;
- for (increment = 0; increment < 100; increment++)
- {
- NSLog(increment++);
- }
-(void) method : (int) arguments;
-为方法类型 +表示类方法
-(id) initWithAge:(int) _age identify:(int)_identify
方法名称为initWithAge,第一个参数是(int) _age,第二个参数是(int)_identify
identify其实是对_identify的一个说明,initWithAge对_age一个说明
方法的调用:
1.[类名或对象名 方法名];
2.对象名.方法名
- NSString *s;
- s = [[NSString alloc] initWithString:@Hello iphone4S];
- Person *person = [Person alloc];
- person = [person init];
- -(id) initWithAge:(int)_age identify:(int) _identify
- {
- if(self = [super init])
- {
- age = _age;
- identify = _identify;
- }
- return self;
- }
- 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是这样的:
- Person *person = [[Person alloc] init];
但是对应的需要在return之前使用:
- [pool drain]或者[pool release];
drain用于清除pool中对象,release用来释放内存
比如可以这样[person release]
方法调用:
[实例 方法]
[类名 方法]
完整的方法调用格式为:
[接收方 名字1:参数1 名字2: 参数2 名字3: 参数3 ...]
oc运行在一个方法调用中嵌套另一个方法调用,比如:
- [NSString stringWithFormat:[test format]];
另外还有一单,self类似this,可以使用self调用本类中的方法:
- -(BOOL) isQualified
- {
- return ([self age] > 21);
- }
输入输出,和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:
- //
- // MyClass.h
- // test
- //
- // Created by Dawn on 13-5-27.
- // Copyright (c) 2013年 zeng. All rights reserved.
- //
- #import <Foundation/Foundation.h>
- @interface MyClass : NSObject{
- int intValue;
- float floatValue;
- }
- @property int _intValue;
- @property (copy) NSString *name;
- @property float floatValue;
- @property (readonly, getter = getANickname) NSString *nickname;
- @end
MyClass.m:
- //
- // MyClass.m
- // test
- //
- // Created by Dawn on 13-5-27.
- // Copyright (c) 2013年 zeng. All rights reserved.
- //
- #import "MyClass.h"
- @implementation MyClass
- @synthesize _intValue = intValue, name;
- // 这条语句不是必须的
- @dynamic floatValue;
- -(float) floatValue{
- return floatValue;
- }
- -(void)setFloatValue:(float)aValue{
- floatValue = aValue;
- }
- -(NSString *)getANickname{
- return @"Lee";
- }
- @end
main.m:
- //
- // main.m
- // test
- //
- // Created by Zeng on 13-5-24.
- // Copyright (c) 2013年 zeng. All rights reserved.
- //
- #import <Foundation/Foundation.h>
- #import "YourClub.h"
- #import "Membership.h"
- #import "MyClass.h"
- int main(int argc, const char * argv[])
- {
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- MyClass *class1 = [[MyClass alloc] init];
- [class1 set_intValue:1];
- [class1 setName:@"Sam"];
- [class1 setFloatValue:1.1f];
- NSLog(@"intValue is %i, name is %@, floatValue is %g, nickname is %@", [class1 _intValue], [class1 name], [class1 floatValue], [class1 getANickname]);
- [class1 release];
- [pool release];
- return 0;
- }
在object-c 2.0中,在.h文件中使用@property来标识属性(一般是实例变量);在实现文件中(也就是扩展名为.m的文件),使用@synthesize标识所声明的属性,让系统自动生成设置方法和获取方法。
声明一个多参数的方法:
MyClass.h:
- //
- // MyClass.h
- // test
- //
- // Created by Dawn on 13-5-27.
- // Copyright (c) 2013年 zeng. All rights reserved.
- //
- #import <Foundation/Foundation.h>
- @interface MyClass : NSObject{
- NSString *name;
- int age;
- }
- @property (nonatomic, copy) NSString *name;
- @property (nonatomic) int age;
- -(void) setName:(NSString *)theName andSetTheAge: (int) theAge;
- @end
MyClass.m:
- //
- // MyClass.m
- // test
- //
- // Created by Dawn on 13-5-27.
- // Copyright (c) 2013年 zeng. All rights reserved.
- //
- #import "MyClass.h"
- @implementation MyClass
- @synthesize name;
- @synthesize age;
- -(void) setName:(NSString *)theName andSetTheAge: (int) theAge{
- [self setName:theName];
- [self setAge:theAge];
- }
- @end
main.m:
- //
- // main.m
- // test
- //
- // Created by Zeng on 13-5-24.
- // Copyright (c) 2013年 zeng. All rights reserved.
- //
- #import <Foundation/Foundation.h>
- #import "YourClub.h"
- #import "Membership.h"
- #import "MyClass.h"
- int main(int argc, const char * argv[])
- {
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- MyClass *class1 = [[MyClass alloc] init];
- [class1 setName:@"zengraoli" andSetTheAge:36];
- NSLog(@"name is %@, age is %i", [class1 name], [class1 age]);
- [pool release];
- return 0;
- }
【转】话说我打算一天学完object c语法,系列1--------来自书Objective-c程序设计的更多相关文章
- 简明易懂,将细节隐藏,面向新手树立web开发概念——学完Java基础语法,超快速上手springboot+mybatiJavaWeb开发
简明易懂,将细节隐藏,面向新手树立web开发概念 --学完Java基础语法,超快速上手JavaWeb开发 Web本质(先忽视各种协议) Web应用可以理解为浏览器和服务器之间的交互. 我们可以看一个简 ...
- Golang入门(2):一天学完GO的基本语法
摘要 在配置好环境之后,要研究的就是这个语言的语法了.在这篇文章中,作者希望可以简单的介绍一下Golang的各种语法,并与C和Java作一些简单的对比以加深记忆.因为这篇文章只是入门Golang的第二 ...
- 在w3cschool学完html,css,javascript,jquery以后,还是不会做前端怎么办?
w3cschool是一个非盈利性的在线技术学习网站,提供按W3C标准编写的基础教程.完整的看完w3cschool上面的手册,可以基本掌握编程语法.基础性的东西通常都会比较零散,因此,在学习一段时间后, ...
- 7天学完Java基础之0/7
笔记-7天学完Java基础之0/7 1.常用命令提示符(cmd) 启动:Win+R,输入cmd
- 学完微型服务器(Tomcat)对其工作流程的理解,自己着手写个简单的tomcat
学完微型服务器(Tomcat)对其工作流程的理解,自己着手写个简单的tomcat 2019-05-09 19:28:42 注:项目(MyEclipse)创建的时候选择:Web Service Pr ...
- 零基础学完Python的7大就业方向,哪个赚钱多?
“ 我想学 Python,但是学完 Python 后都能干啥 ?” “ 现在学 Python,哪个方向最简单?哪个方向最吃香 ?” “ …… ” 相信不少 Python 的初学者,都会遇到上面的这些问 ...
- Golang入门(3):一天学完GO的进阶语法
摘要 在上一篇文章中,我们聊了聊Golang中的一些基础的语法,如变量的定义.条件语句.循环语句等等.他们和其他语言很相似,我们只需要看一看它们之间的区别,就差不多可以掌握了,所以作者称它们为&quo ...
- 0基础如何更快速入门Linux系统?学完Linux有哪些就业方向?
Linux系统是使用Linux内核及开源自由软件组成的一套操作系统,是一种类UNIX系统,其内核在1991年10月5日由林纳斯·托瓦兹首次发布. 它的主要特性:Linux文件一切皆文件.完全开源免费. ...
- 3分钟学完Python,直接从入门到精通
作为帅气小编,我已经把python一些模块的甩在这儿了qwq,只要你拿到这些干货,包你玩转python,直接冲向"大佬"的段位,如果已经学了C或者C++或者说如果你需要你的一段关键 ...
随机推荐
- jquery mouseout事件冒泡解决方法
在界面中最多使用的是div,如果一个div中包含多个div或img对象时, 针对mouseout鼠标移出事件时,并没有移出div层,但是当移动到div中的img时,也触发了该mouseout事件,这就 ...
- lintcode 中等题:搜索旋转排序数组II
题目 搜索旋转排序数组 II 跟进“搜索旋转排序数组”,假如有重复元素又将如何? 是否会影响运行时间复杂度? 如何影响? 为何会影响? 写出一个函数判断给定的目标值是否出现在数组中. 样例 给出[3, ...
- hdu 1005 java(System.out.println();与System.out.println(“\n”);)
//package Main; import java.util.Scanner; public class Main { static int [][] mat=new int [2][2]; st ...
- 国内为什么没有好的 Stack Overflow 的模仿者?
国内为什么没有好的 Stack Overflow 的模仿者? 个人觉得, 高端的程序员会直接上stackoverflow提问, 所以国内中文的stackoverflow必然面对低端程序员. 鉴于中国程 ...
- Linux中断处理体系结构分析
Linux中断处理体系结构分析(一) 异常,就是可以打断CPU正常运行流程的一些事情,比如外部中断.未定义指令.试图修改只读的数据.执行swi指令(Software Interrupt Instruc ...
- JavaScript DOM编程基础精华02(window对象的属性,事件中的this,动态创建DOM,innerText和innerHTML)
window对象的属性1 window.location对象: window.location.href=‘’;//重新导航到新页面,可以取值,也可以赋值. window.location.reloa ...
- P25、面试题1:赋值运算符函数
题目:如下为类型CMyString的声明,请为该类型添加赋值运算符函数. class CMyString { public: CMyString(char* pData = NULL); CMyStr ...
- cas单点登出
由于项目需求要实现单点登出需要在网上找了N久终于实现单点登出. 使用cas-server-core-3.3.3.jar(CAS Server 3.3.3) 使用cas-client-core-3.1. ...
- IOS打包脚本
1.xcodebuild clean -project $projectname.xcodeproj -configuration Release -alltargets2.xcodebuild ar ...
- BZOJ 3132 上帝造题的七分钟(二维树状数组)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=3132 题意:给出一个矩阵,两种操作:(1)将某个子矩阵的数字统一加上某个值:(2)查询某 ...