创建: 2018/01/17

完成: 2018/01/19

 对象(object)与信息
 信息式
声明实例变量 
id obj;
 向对象变量发送信息

[obj msg] //这就是信息式
例: [[obj msg1] msg2];

把信息式返回的结果

作为数组等的索引来用

element = table[[obj count]];

 信息(message)
和变量一样的命名规则, 由信息关键字组成
[aString copy];
width = [node width]; //变量名和信息名可以重复,自动区分
[[doc filename] retain];

可以带参数

信息后面带:

[printInfo setLeftMargin: 60.0];
[[[cw window] firstResponder] copy: sender];
[doc isSameDirecory:[info objectAtIndex: ++num]];

带有多个信息,空格分开,可以省略信息关键词p19

// TODO: 省略信息关键词后默认关键词是啥

cell = [albumview cellAtRow:i column:j];
[manager fileExistsAtPath:dirname isDirectory:&isdir];
[view lineTo: 1.4142 :(y + 1.0)];

信息选择器

(message selector)

没有值
copy
message
有值

copy:
message:
多个值

left:right:
lineTo:://第二个量开始可以省略关键词
   
注意: 信息选择器有顺序,顺序不同的不看做同一个  
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   

实例的生成与初始化

ObjC里通过向类发送信息的方式来生成

//生成 alloc
[类名 alloc] //只确保了内存空间,需要初始化 //初始化 init 以init开头的
[[类名 alloc] init]
   
   
   
   
   
   
   
   
 类的定义
 类的interface部分
 位置  一般记在头文件里
 例 

・类名不能和变量或方法的声明重名

 ・变量和方法可以重名

@interface 类名 : 母类名
{
实例变量的声明;
...
}
方法的声明;
...
@end //注意: @end后面不需要;

@开头的是编译修饰符,区别于C语言的#开头

 方法的声明

・可以省略类型声明,默认为id。C语言下默认为int。但是不要省略

(id)delegate; //不带参数
(id)cellAtRow:(int)row column:(int)col; //带两个参数
(void)setAutodisplay:(BOOL)flag;// BOOL YES(非零) NO(零)
   
   
   
   
   
   
   
 类的实现部分
 例

・不用写母类

・interface里声明的方法必须有对应实现

@implementation 类名
方法的定义
...
@end
 方法的实现例

・方法的参数名里的变量和方法内的局部变量不要和类的实例变量重名 

・方法内部可以自由获取该类的实例变量

・self 表示拥有当前方法的实例对象,可以用self来实现递归

(double)evalution:(int)val {
double temp = [order proposedBalance: value];
if (currentValue > (int)temp) {
temp = [order proposedBalance: val*1.25]
}
return temp;
}
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
 编译
   类似C语言
   
   
   
   
   
   
   
   
   
 程序的写法 
 ObjC混合语言
 ObjC是混合语言 支持多种编程风格:面向对象,面向过程
 何时用C

●使用现成的函数模块(module)

●Unix的系统接口

●不与具体类相关的计算模块

●在类定义里作为其他方法的一部分子函数

   
 c语言的使用方法

随便哪里都能放

不在类定义里的不能用self(?) # TODO: check [到底啥意思]

 静态变量

对象部分(面向对象部分)不要用static固定变量

原因: 静态变量被多个对象参照,值被各种不经意修改

 接入头文件
 ObjC
#import <stdio.h>
 C
#include <stdio.h>
 区别

两者一样,但是#import只会被包含一次

#import "a.h" // 只会被包含一层

// 相当于
#ifndef _A_H_
#define _A_H_
// 头文件代码写在这里
#endif
   
   
   
   
   
   
   
   

Objective-C程序的更多相关文章

  1. Ubuntu编绎 Objective C程序

    1.安装如下组件 sudo apt-get install如下组件:build-essential gobjc gobjc++ gnustep-devel 2.在工作目录建立下如Shell脚本,并更改 ...

  2. Objective C Runtime 开发介绍

    简介 Objective c 语言尽可能的把决定从编译推迟到链接到运行时.只要可能,它就会动态的处理事情.这就意味着它不仅仅需要一个编译器,也需要一个运行时系统来执行变异好的代码.运行时系统就好像是O ...

  3. GCC中文手册

    GCC 1 NAME gcc,g++-GNU工程的C和C++编译器(egcs-1.1.2) 总览(SYNOPSIS) gcc[option|filename ]... g++[option|filen ...

  4. gcc g++ 参数介绍

    C和C++ 编译器是集成的.他们都要用四个步骤中的一个或多个处理输入文件: 预处理 (preprocessing),编译(compilation),汇编(assembly)和连接(linking).源 ...

  5. Objective-C内存管理与原理

    尽管苹果在 iOS 5/ Mac OS X 10.7 开始导入ARC,利用 Xcode4.2 可以使用该机能.ARC就是自动引用计数,是一项为Objective - C程序在编译时提供自动内存管理的功 ...

  6. 【转】Swift 语言的设计错误

    Swift 语言的设计错误 在『编程的智慧』一文中,我分析和肯定了 Swift 语言的 optional type 设计,但这并不等于 Swift 语言的整体设计是完美没有问题的.其实 Swift 1 ...

  7. <摘录>GCC 中文手

    GCC 中文手册 作者:徐明 GCC Section: GNU Tools (1) Updated: 2003/12/05 Index Return to Main Contents -------- ...

  8. 【转载】 GNU GCC 选项说明

    GCC 1 Section: GNU Tools (1) Updated: 2003/12/05 Sponsor: GCC Casino Winning Content NAME gcc,g++-GN ...

  9. 【转载】GCC 预处理器选项

    预处理器选项(Preprocessor Option) 下列选项针对C预处理器,预处理器用在正式编译以前,对C 源文件进行某种处理. 如果指定了`-E'选项, GCC只进行预处理工作.下面的某些选项必 ...

  10. IOS ARC内存管理,提高效率避免内存泄露

    本文转载至 http://blog.csdn.net/allison162004/article/details/38756263 Cocoa内存管理机制 (1)当你使用new.alloc.copy方 ...

随机推荐

  1. [转]ionic或者angularjs中图片显示压缩问题解决 or 显示较大图片的某一块区域、裁剪显示

    我们知道在html中显示图片一般都是用img控件标签,当然调整大小的也很容易. 但是会出现,特定的img大小,显示一张比较大尺寸的且长宽比例与特定img大小不相符的图片.而导致压缩问题,图片挤压的很严 ...

  2. admin源码之url设计

    如何实现批量设计url? 1.创建Django项目 2.新建app01 和 app02 3.在models.py中创建模型 4.在settings.py中完成数据库配置.app配置等 5.数据库迁移 ...

  3. jquery给span赋值

    span是最简单的容器,可以当作一个形式标签,其取值赋值方法有别于一般的页面元素. //赋值 $("#spanid").html(value) //取值 $("#span ...

  4. 九度oj 题目1055:数组逆置

    题目1055:数组逆置 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:8225 解决:3932 题目描述: 输入一个字符串,长度小于等于200,然后将数组逆置输出. 输入: 测试数据有多组 ...

  5. nyoj_10_skiing_201405181748

    skiing 时间限制:3000 ms  |  内存限制:65535 KB 难度:5   描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当 ...

  6. Codeforces 799E(贪心)

    题意: 有n个物品,购买物品i需要花费ci的代价.Arkady和Masha分别有喜欢的物品. 现在需要从中选m个,使得这m个物品中至少有k个Arkady喜欢的物品,k个Masha喜欢的物品. 输出满足 ...

  7. hdu3756(三分)

    题意:三维坐标轴,有以原点为圆心,底面在xoy平面上,顶点在z轴上的圆锥,问圆锥的最小体积为多少才能完全覆盖空间里的所有点(n<=10000) 分析: 很容易想到转成二维问题,将其投影到xoz平 ...

  8. 关于SQL SERVER导出数据的问题!

    前面一段时间,为这个导出数据真是煞费苦心,网上找了好多资料都没有找到. 从SQL SERVER 2008开始,我们就可以很方便的导出数据脚本,而无需再借助存储过程,但是SQL Server 2012和 ...

  9. osg提前定义几何体设置颜色

    注意尽管osg::shape不能够设置颜色,可是osg::shapedrawable能够.

  10. Android插屏动画效果

    公司研发SDK,须要类似有米插屏的动画效果,研究了下,写了一个DEMO,凝视非常具体了. <span style="font-size:24px;">package c ...