Object-c学习笔记(1)

说明:本人用的win8 系统装Code::Blocks练习OC。

1.类的声明和实现的关系图:

 @interface就好像暴露在外面的时钟表面

 @implementation就好像隐藏在时钟内部的构造实现

2.语法中要注意的地方

(1).成员变量不能在{}中进行初始化、不能被直接拿出去访问

(2).方法不能当做函数一样调用

(3).成员变量\方法不能用static等关键字修饰,不能和C语言混在一起

(4).类的实现可用写在main函数的后面,主要在声明后面就行了

3.一些错误的写法:

(1).只有类的声明,没有类的实现

(2).漏了@end

(3)[email protected]和@implementation嵌套

(4).两个类的声明嵌套

(5).成员变量没有写在括号里面

(6).方法的声明写在了大括号里面

4.OC方法和函数的区别

(1).OC方法只能声明在@interface和@end之间,只能实现在@implementation和@end之间。也就是说OC方法不能独立于类存在

(2)C函数不属于类,跟类没有联系,C函数只归定义函数的文件所有

(3)C函数不能访问OC对象的成员

(4)低级错误:方法有声明,但是实现的时候写成了函数

5. OC的方法要注意的地方:

(1).方法只有声明,没有实现(经典错误)

(2).方法没有声明,只有实现(编译器警告,但是能调用,OC的弱语法)

(3). 编译的时候:访问没有的成员变量直接报错,访问没有的方法,只是警告

 6.特别要注意:

(1).冒号也是方法名的一部分

(2).同一个类中不允许两个对象方法同名

7.代码实践:

#import <Foundation/Foundation.h>

/*
计算器类
*/

@interface Calculator : NSObject{
    @public
    double num;
}
//计算数的平方
- (double) square;
- (int) sumWithnum1:(int)num1 addNum2:(int) num2;
@end

//计算器的实现
@implementation Calculator
//计算一个数的平方
- (double) square{
    return num * num;
}
//针对两个数求和
- (int) sumWithnum1:(int)num1 addNum2:(int) num2{
   return num1 + num2;
}
@end

int main()
{
Calculator *c = [Calculator new];
//给计算器类成员变量赋值
c->num = 25;
//调用平方这个方法
double result = [c square];
NSLog(@"%.1f的平方是%.1f",c->num,result);

//调用求和这种方法:
int sum = [c sumWithnum1:23 addNum2:34];
NSLog(@"sum=%d",sum);
return 0;
}

代码效果图:

时间: 2025-01-07 02:18:40

Object-c学习笔记(1)的相关文章

Java Object类学习笔记

看下Api文档的一些说明 public class Object Class Object is the root of the class hierarchy. Every class has Object as a superclass. All objects, including arrays, implement the methods of this class. Since: JDK1.0 从JDK1.0就已经存在的元老类,类结构的根,所有类的父类,所有类都实现了这个类的方法,包含

Object C学习笔记25-文件管理(一)

在此篇文章中简单记录一下文件管理,在Object C中NSFileManager用于管理文件已经路径.在Object C中的文件路径可以是相对路径也可以是绝对路径.斜线"/"开头,斜线实际上就是一个目录,称为 根目录.字符(-)用作用户主目录的缩写.点" . "表示当前目录,两点"  .. "表示父目录. 一. 创建NSFileManager 对象 NSFileManager非常简单,可以使用如下方式来创建NSFileManager对象. NSS

Object C学习笔记26-文件管理(二)

上一篇简单的介绍了如何获取文件属性,删除,拷贝文件等,本文继续记录Object C中文件IO操作. 一. 获取文件的执行主目录 在Object C中提供了一个方法 NSHomeDirectory() 用于获得执行执行的主目录,使用如下代码测试: NSString *homePath=NSHomeDirectory(); NSLog(@"执行文件的主目录:%@",homePath); 通过以上代码可以正确的输出应用程序的执行目录,上一张也提到了文件的目录问题,这个和Windows系统的有

object c 学习笔记

类方法: 一.类方法 类方法: 1.当类中有一些方法,使用的频率很高,并且不依赖于成员变量的时候,就可以把它声明成类方法来应用 2.一定以 + 号开头 (对象方法 - 号 开头) 3.一定是使用类名调用的方法 4.类方法中,不可以访问自身的成员变量因为调用类方法,不需要先创建对象,所以也就没有存储成员变量值的地方那么也就无法去访问成员变量 类方法的优势 1.不需要开辟内存空间存储对象,理论上是节省一定的内存空间 2.调用方便 谁有好点的例子能给说明一下么?或者补充点内容

Object C学习笔记2-NSLog 格式化输出数据

1 . 几种常用类型变量声明 int i =10; BOOL isShow=YES; BOOL isShow=1; float f = 3.1415926; char a =120; NSString *name [email protected]"Himi"; object-c中BOOL类型长度1byte, 若将short或int型数赋值给BOOL类型则截取低位1个字节. object-c  中字符串类型的声明和java,C# 有点不一样,string 在面向对象语言中是一个引用类型

WPF基础学习笔记(一)Dependency Object 和 Dependency Property

.依赖属性是WPF个人觉得对精彩和最有特色的部分.所以特地先拿出来. 首先要实现Dependency Property 则必须要继承Dependency Object.如果看下WPF的基础控件其实都间接或者直接继承Dependency Object,这点规律性我在后面再做规律陈述. 首先Dependency Object 我搬下书的描述 Only the thread that the Dispatcher was created on may access the DispatcherObje

C++ Primer 学习笔记33_面向对象编程(4)--虚函数与多态(一):多态、派生类重定义、虚函数的访问、 . 和-&gt;的区别、虚析构函数、object slicing与虚函数

C++ Primer学习笔记33_面向对象编程(4)--虚函数与多态(一):多态.派生类重定义.虚函数的访问. . 和->的区别.虚析构函数.object slicing与虚函数 一.多态 多态可以简单地概括为"一个接口,多种方法",前面讲过的重载就是一种简单的多态,一个函数名(调用接口)对应着几个不同的函数原型(方法). 更通俗的说,多态行是指同一个操作作用于不同的对象就会产生不同的响应.或者说,多态性是指发出同样的消息被不同类型的对象接收时有可能导致完全不同的行为. 多态行分

Java程序猿的JavaScript学习笔记(5——prototype和Object内置方法)

计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript学习笔记(3--this/call/apply) Java程序猿的JavaScript学习笔记(4--this/闭包/getter/setter) Java程序猿的JavaScript学习笔记(5--prototype) Java程序猿的JavaScript学习笔记(6--面向对象模拟) Java程

c++ 11学习笔记--Lambda 表达式(对比测试Lambda ,bind,Function Object)

所有c++ coder都应该为这个语法感到高兴,说的直白一点,Lambda 表达式就是函数对象的语法糖. 还是直接看对比栗子吧,抄袭的是msdn的官网 该示例使用 for_each 函数调用中嵌入的 lambda 向控制台打印 vector 对象中的每个元素是偶数还是奇数. 使用lambda #include <algorithm> #include <iostream> #include <vector> using namespace std; int main()

[Guava学习笔记]Basic Utilities: Null, 前置条件, Object方法, 排序, 异常

我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3842433.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验. Null Guava用Optional表示可能为null的T类型引用. 创建:Optional.of(T)不接受null Optional.fromNullable(T)接受null Optional.absent() 查询:isPresent() get() or(T)如果为null则为T o