创建: 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. 节点回来shard仍然delayed原因

    1:es2 fetch shard data时,存在节点刚加入集群,还没有收到cluster metadata的情况.此时,节点因为没有该索引,返回的sharddata为empty,主节点缓存了该sh ...

  2. 斯特林(Stirling)公式 求大数阶乘的位数

    我们知道整数n的位数的计算方法为:log10(n)+1n!=10^m故n!的位数为 m = log10(n!)+1 lgN!=lg1+lg2+lg3+lg4+lg5+................. ...

  3. javabean组件

    javaBean组件引入: javaBean是使用java语言开发的一个可重用的组件,在Jsp开发中可以使用javaBean减少重复代码,使整个JSP代码的开发更简洁. 我们首先创建一个类叫做Stud ...

  4. 选择器的使用(first-child和last-child选择器)

    <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta ...

  5. 使用RoboCopy 命令[转载]

    经常进行文件管理操作的朋友们,不满意于Windows系统内置的复制功能,因为它太龟速了.于是大家就使用FastCopy.TeraCopy之类的软件来加速复制,但是你是否知道Windows 7已经内置快 ...

  6. Hadoop 执行过程中出现 name node is in safe mode 问题

    解决方法: 1.进入hadoop安装根目录 如 :我的hadoop 安装在/usr/local/hadoop 执行 cd /usr/local/hadoop bin/hadoop dfsadmin - ...

  7. Swift 函数Count,Filter,Map,Reduce

    原创Blog,转载请注明出处 blog.csdn.net/hello_hwc 前言:和OC不同,Swift有非常多全局的函数,这些全局函数对简化代码来说非常实用.眼下Swift出到了2.0,只是我这篇 ...

  8. 找了两个node+vue-cli+mogodb的小项目学学

    实现的博客系统,自己抽时间搭建看看 https://www.cnblogs.com/yesyes/p/7188331.html https://github.com/chaohangz/vueBlog

  9. xib或者storyboard设置颜色偏问题(与代码设置颜色不一致)

    选中xib中的label,在右边栏的第三个标签页中第三项是User Defined Runtime Attributes 添加一个keyPath,keyPath值为layer.borderWidth, ...

  10. Linux bash: scp: command not found的问题记录

    ,总结 scp成功,须要两个server都安装了scp服务才行.