Objective-C 类,数据成员,函数成员,对象,

2023-11-01


一、类

在ios中,类的声明和实现时分离的,也就是说不能写在同一个文件中,声明放在 .h文件中,实现放在 .m 文件中。在实现文件中引入 .h文件,#import "xxx.h"
声明一个类:
#import <Foundation/Foundation.h>
@interface Person : NSObject

@end

实现一个类:

#import "Person.h"
@implementation Person

@end



假如我们在XCode中定义一个Person类,可以选择Cocoa Class或者Cocoa Touch Class。

输入类名(WZKPerson),并选择父类为NSObject。

另外OC和C#对比,没有了命名空间的概念,OC的类为了避免混淆一般通过前缀进行区分,如你看到的IOS基础类库,很多带有NS,UI,CA,等这样的前缀,就是这个原因。

最后将会生成两个文件:
WZKPerson.h文件


WZKPerson.h

WZKPerson.m文件


WZKPerson.m
  • .h文件:
    通常放类的声明(成员变量、属性、方法声明);
    关键字@interface声明一个类,同时以@end结束,类的声明放在这两个关键字中间;
    另外WZKPerson类继承自NSObject(OC的基类);
    由于WZKPerson类在Foundation框架中定义,所以导入了 Foundation框架中Foundation.h声明文件(<Foundation/Foundation.h>);
  • .m文件
    通常放类的具体实现(方法、属性);
    关键字@implementation用于实现这个类,同时以@end结束,这两个关键字中间实现具体的属性、方法;
    因为.m文件中使用到了WZKPerson类,所以需要导入WZKPerson.h文件;
  • 导入系统的头文件一般用<>,而导入自定义的类文件用"";



二、实例成员

在ios类中吧变量叫做实例变量,并且默认权限为 protected,在类中只能声明实例变量,必能声明方法。并且不能在  .h文件中声明静态实例变量,只能在 .m声明和使用。



1344302607_2424.jpg



Eg:
#import <Foundation/Foundation.h>

@interface Person : NSObject{
    int age ;
    NSString* name;  //ios中的字符串
    //static int dwint; error  ,can't 
}
@end




四、对象方法
对象方法不能在括号中声明,只能在括号外声明,并且在前面加上  - 。
#import <Foundation/Foundation.h>

@interface Person : NSObject{
    int age ;
    NSString* name;  //ios中的字符串
}
-(int)getAge;
-(NSString*)getName;
-(void)setAge:(int)_age;
-(void)setName:(NSString*)_name;
-(void)setAge:(int)_age andName:(NSString*)_name;
@end


实现 .m
#import "Person.h"

@implementation Person
static int dwint=20;
-(int)getAge{
    return age;
}
-(NSString*)getName{
    return name;
}
-(void)setAge:(int)_age{
    age=_age;
}
-(void)setName:(NSString*)_name{
    name=_name;
}
-(void)setAge:(int)_age andName:(NSString*)_name{
    age=_age;
    name=_name;
}
+(int)getStatic{
    return dwint;
}
@end


六、对象

#import <Foundation/Foundation.h>
#import "Circle.h"
#import "Person.h"

int main (int argc, const char * argv[])
{

    @autoreleasepool {

        NSLog(@"Hello, World!");
        NSString* str_name=@"shouqiang_Wei";  // 在这里字符串前面必须加上@
        Person* person=[[Person alloc] init];  //这里使用 [类名 函数名] 的形式 所以 init 是一个类方法,并且是一个默认构造,用来初始化对象, 
        [person setAge:30 andName:str_name];
        NSLog(@"age = %d ,name = %@",[person getAge],[person getName]);  // %@输出Object 类型

    }
    return 0;
}


参考:

1. Objective-C 类,实例成员,静态变量,对象方法,类方法(静态方法),对象,

http://blog.csdn.net/shouqiangwei/article/details/9966833


2.  

object-c 学习第三天(方法和消息)

http://blog.csdn.net/zc55803903/article/details/7837609




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Objective-C 类,数据成员,函数成员,对象, 的相关文章

随机推荐

  • MyBatis 特殊字符转义拦截器 针对(_、\、%)

    一 问题反馈 今天公司测试向我反馈 系统用户模糊查询功能在用户名称包含特殊字符时 无法正常查询结果 二 问题验证 1 当like中包含 时 查询仍为全部 即 like 查询出来的结果与like 一致 并不能查询出实际字段中包含有 特殊字符的
  • 构建Camel和Raspberry Pi物联网

    该项目基于Camel技术 项目为IoT社区提供了一些很棒的新东西 这些东西是将电子设备 i2c SPI gpio tinkerforge 和云 pubnub cloudlet mqtt 连接在一起的新的物联网组件 在本实验中 我们将展示如何
  • 卡特兰数——括号匹配问题

    卡特兰数的递推公式是F n k 1 n F k 1 F n k k 0 n 1 F k F n k 1 一般性公式为F n C 2n n n 1 可以描述的问题有 1 n个元素的二叉查找树有多少种 2 n n棋盘从左下角走到右上角而不穿过主
  • Go语言-log

    1 log包 作为程序调试手段和运行记录 log是非常重要的 现在多数情况下并不是通过某个调试器来进行debug了 而是通过打log的方式观察和调试程序 可以根据自己的需要实现log功能 Go语言本身也已经内置了log包 这里研究Go语言内
  • 排序1:几种基本的排序方法

    在数据结构课里 一般会将查找和排序放在一起 大部分人都会感觉查找比排序容易 但是我们研究过算法之后就会发现查找远远难于排序 因为常见的排序方法是相对固定的 而查找除了最基本的二分查找外 还包含非常广的内容 二叉树 各种树 Hash 大数据下
  • Ubuntu更新动态链接库 sudo ldconfig

    error while loading shared libraries libg2o core so cannot open shared object file No such file or directory解决方法 在build文
  • 使有prometheus监控redis,mongodb,nginx,mysql,jmx(经典推荐!)

    以下操作在CENTOS7环境 使用prometheus做监控 使用grafana做dashboard的界面展示 因prometheus自带的监控web界面图形化展示方面比较弱 推荐使用grafana集成prometheus展示 一 软件安装
  • 运维日志排序_100分_B卷_自定义排序

    运维日志排序 题目描述 运维工程师采集到某产品线网运行一天产生的日志 n 条 现需根据日志时间先后顺序对日志进行排序 日志时间格式为 H M S N H表示小时 0 23 M表示分钟 0 59 S表示秒 0 59 N表示毫秒 0 999 时
  • Ubuntu16.04安装ns3.29过程

    安装ns3过程 版本ns3 29 在ns3的官方主页 http www nsnam org 上就能看到详细的安装文档 安装方式下载二进制文档进行编译 1 1 下载 点击Download 点击左侧ns 3 29 也可以自行下载其他版本 点击截
  • 深度学习图像分割算法—FCN代码实现

    FCN 全卷积网络 原论文链接 https arxiv org pdf 1411 4038 pdf 官方源代码 https github com shelhamer fcn berkeleyvision org截图如下 data文件夹 官方
  • 中国DVR卡发展过程与趋势分析

    关于分析中国DVR发展趋势之文 在安防论坛与杂志上可以经常看到 这类文章大多数市场划人员单纯站在市场的角度来预测中国DVR的发展趋势 本文作者将以分析中国DVR发展过程为基础 结合目前视频技术领域状况 对未来1 2年中国DVR卡的发展趋势进
  • import torch出现 ctypes.CDLL(dll) self._handle=_dlopen(self._name,mode) OSError:[WinError 126]找不到指定的模块

    问题 我明明已经把 pytorch 和 torchvision 安装了 但在写程序时老是出现下图错误 显示import torch这一行就出问题了 解决 经过查阅网上各种说法 发现原来自己安装了 gpu 版本的 由于我笔记本的显卡不是英伟达
  • 基于贝叶斯的V2X通信传输数据的Trustworthiness估计

    标签 Trustworthiness Estimation 论文标题 Trustworthiness Estimation of Entities within Collective Perception 发表期刊 会议 2019 IEEE
  • Android------- IjkPlayer 源码学习目录

    在看了雷霄华的VideoEye后 发现其视图层使用的是SDL在windows上展示的 但是本人是搞Android App开发的 读其源码时 总是感觉有点不对劲 最后找到了bilibili 为移动端封装ffmpeg的框架 IjkPlayer
  • Global Average Pooling对全连接层的可替代性分析

    在NIN Network in Network 这篇论文中有很多的思想让人受益匪浅 其中之一就是全局平均池化 Global Average Pooling 对于全连接层的替代性分析 刚开始由于觉得之后的研究不需要NIN 因此就没去看论文 看
  • 第07课:生活中的代理模式——帮我拿一下快递

    用程序来模拟生活 从剧情中思考代理模式 代理模式的模型抽象 代码框架 类图 基于框架的实现 模型说明 代理模式的优点 代理模式的缺点 应用场景 故事剧情 八月中秋已过 冬天急速飞来 一场秋雨一场寒 十场秋雨穿上棉 在下了两场秋雨之后 Ton
  • 微信小程序精通到入门---07 tabBar和导航跳转

    一 tabBar使用 tabBar就是微信小程序底部的tab框 每个框必须指定一个对应的页面 设置步骤如下 步骤1 在images文件下创建一个nav目录 并且创建了6个图片 3个tab 每个tab的active和非acitve状态各一张
  • ChatGPT+Ai绘图【stable-diffusion实战】

    ai绘图 stable diffusion生成 还有很大的提升空间 提示词1 Picture a planet where every living thing is made of light The landscapes are bre
  • 知道两数之和,然后在数组中找到,输出数组下标

    这一个是对于在一个数组当中 这个数组是给定的然后在其数组内查找两个数相加等于目标值的数 之后输出他们的数组下标 1 首先从理解题目入手 从题目中可以看出给定的数组中有几个数 然后给出目标结果值 2 根据给定的开头 c语言版 int twoS
  • Objective-C 类,数据成员,函数成员,对象,

    一 类 在ios中 类的声明和实现时分离的 也就是说不能写在同一个文件中 声明放在 文件中 实现放在 m 文件中 在实现文件中引入 h文件 import xxx h 声明一个类 import