感觉离目标又 进了一步,少说话,多敲代码是王道!!!
本期目录:
1.错误与解答
2.mac下oc开发入门
3.面向对象的理解与初体验
4.oc简单语法剖析
5.oc第一阶段学习总结
6.近期规划
一:错误与解答
把自己初入oc领域所出现的各种“低级错误”记录下来,激励自己:万丈高楼平地起!!!
a. 会和java语言混淆概念。java中方法的调用时 Object.method(); oc中[指针 method]。java代码中没有其他代码的介入,而oc中掺杂了好多c代码。
b.oc的字符串一定要以@开始。声明的方法必须以-开始。@interface和@end@implementation和@end一定成对出现,且不能嵌套 。
c.链接时要跟上 -framework Foundation,否则一大堆错误。
d. 函数名的大小写。比如:NSLog() ,不是NSlog。
e.@interface 中定义的是实例变量不能赋值,也不能随便加static。记住:方法是方法,函数是函数。
f.oc程序自上而下执行时,main不能调用为声明的类,可以先有声明,实现放在main之后
二: 面向对象的理解与初体验
首先介绍一下oc
Ø C语言的基础上,增加了一层最小的面向对象语法
Ø 完全兼容C语言
Ø 可以在OC代码中混入C语言代码,甚至是C++代码
Ø 可以使用OC开发Mac OS X平台和iOS平台的应用程序
(注意:oc关键字都已@开始与c语言区分)
开发历程:
世界万物皆对象
面向对象与面向过程
面向过程的编码方式:典型C语言。过程式的编程方式让代码逻辑给程序员处理,程序员必须十分小心的去处理程序逻辑和细节。
面向对象的编码方式:oc与java。面向过程的编码方式让组件有了逻辑,他们可以独立的完成与他们本身相关的处理逻辑。
举个例子:
汽车和驾驶员。按照C语言的思想,驾驶员必须明白如何启动汽车,如何往前,如何停下。驾驶员本身必须完成众多的逻辑。而对于面向对象的方式,汽车不在乎谁是驾驶员,驾驶员也不在乎汽车如何往前往后,驾驶员关心的是自己如何到达目的地,开哪辆车。汽车只关心,目的地,驾驶员是谁。所以,“汽车”智能化了!
名词解释:
类:“一种和一类”的意思。类就像一个“模板“,同一个模板可以产生好多相同”具体“,类中反映了本类实物的所用内容,没有具体的成分。
对象:类的实例。对象时类的具体化,类中都是大家有的内容,而对象中则是个性的内容。
总结:
OC中的面向对象
1) OC中的类相当于图纸,用来描述一类事物。也就是说,要想创建对象,必须先有类
2) OC利用类来创建对象,对象是类的具体存在
3) 因此,面向对象解决问题应该是先考虑需要设计哪些类,再利用类创建多少个对象
三: oc简单语法分析
#import<Foundaion/Foundation.h>
<pre name="code" class="objc">/*类名:Person
属性:(成员变量/实例变量):体重,年龄
行为(方法):走路
*/
//类声明
@interface Person : NSObject
{
@public
int age;
double weight;//类属性(实例变量)
}
-(void)walk;
@end
//类实现
@implementation Person
-(void)walk
{
NSLog(@"%d岁,%f公斤的人走了一段路",age,weight);
}
@end
//入口函数main与c语言相通
int main()
{
Person *p = [Person new];
p->age = 20;
p->weight = 50.0;
[p walk];
return 0;
}
与java语言不同的是:java中接口与实现分离,入口在主类中,且java中文件名必须和主类同名。上面代码实现了person类,继承自NSObject 类(new方法的调用)。
代码分析:
oc中类的什么放在@interface @end中,实现放在@implementation @end中。实现中只实现interface中声明的方法,比如:Person中声明了walk方法,@implementation中就有他的声明。这和java中接口与实现基本一致。即:
<span style="font-size:14px;">#import <Foundation/Foundation.h> //空一格注释
@interface
{
//变量域,变量的声明
}
//方法声明
@end
//实现部分
@implementation
{
//可以有implementation自己的变量域
}
//方法的实现
@end
int main()
{
//主函数逻辑部分
return 0;
}</span>
四:oc第一阶段总结
oc中@interface 和@end,@implementation 和@end 意义
总结以一段代码结束,代码包含了第一阶段所有的内容
<pre name="code" class="objc"><pre name="code" class="objc">#import<Foundation/Foundation.h>
@interface Car : NSObject
{
@public
int wheels;
int speed;
}
//类方法
-(void)run;
@end
@implementation Car
-(void)run
{
NSLog(@"%d个轮子,速度为%d的车子跑起来",wheels,speed);
}
@end
//c语言函数
void test(int w,int s)
{ w = 20;
s = 200;
}
void test1(Car *newC) //传入Car对象,试图修改car对象内容
{
newC->wheels = 5;
}
int main()
{
Car *c = [Car new];//c指向car对象
c->wheels = 4; c->speed = 250;
// test(c->wheels,c->speed);
test1(c); //检验test1的作用方式
[c run];
return 0;
}
结果:
总结:oc面向对象的编码发方式,但是却可以无缝嵌入c代码,且切入的c代码可以很好的与oc源码共存,二者不互相排斥。最让我惊叹的是:c函数可以很容易的调用oc对象!!!
五:近期规划
打算三天快速oc理解与实验,两天foundation框架。一步步实现黑马提供的视频代码。学习的过程中多去敲代码,在实验中找到根据和理解。
目标:黑马程序员。