Objective-C中public、protected、private的使用

为什么会设计类protected访问权限?怎么理解子类和父类的继承权限public protected private?ObjC类方法默认权限public?Swift权限控制?Kotlin访问修饰符? 一个人会让房子给他的儿子或者女儿住,但是外人不能随便去住,这就是protected访问权限的典型代表。ObjC语言是鲜有的设计默认实例成员是protected访问权限,C++默认是private. C++的设计比较common, 从语言语法角度,private是最安全的,ObjC很可能是受到GUI界面和类库继承体系的使用影响,设计成protected可以方便子类使用。 阅读详情

1.@public,@protected,@private

个人觉得@public和@protected并没有很明确的区别,在他们作用范围内的对象,如果不将对象设置成@property,则该对象相当于 protected对象,只有子类和本身可以访问该对象;如果将对象设置成@property,则可以使使用者访问该对象。@private,顾名思义, 这里声明的就是私有对象

注:可以通过指针的方式访问。

2.static对象(类内)

我们将对象声明在类中"{"和"}"之外,也就是与方法和@property写在一起,就可以声明一个类内部的static对象。

3.static方法

当方法前是使用"+"来修饰并且声明在头文件中,则说明该方法相当于c++中的static方法,通过类直接调用。但是需要注意的是,虽然这样的方法可以通过类直接调用,但是不可以通过对象调用。

4.public方法

当方法前是使用"-"来修饰并且声明在头文件中,则该方法可以通过类的对象进行调用。

5.private方法

Objective-C中的private方法是通过category实现的,在实现文件中我们声明一个类的category,在这里面的方法就是private方法。类的对象是不可以进行调用的,同样由于该方法的声名是在类的实现文件中,所以子类也是不能重写该方法的。

下面的代码是对于public、protected、private的具体实现

头文件
#import <Foundation/Foundation.h>

@interface Grammar : NSObject {
 

   @public
        NSString* publicString;  //公有成员
   
    @protected
        NSString* protectedString;  //受保护成员
   
    @private
        NSString* privateString;  //私有成员
}

NSString* staticString;   //静态成员      很重要!!!!!

@property (nonatomic, retain) NSString* publicString;  //公有成员

+ (void)staticMethod;  //静态方法(类方法)
- (void)publicMethod;  //公有方法(对象实例方法)

@end//****************************************************

实现文件
#import "Grammar.h"

#pragma mark -
#pragma mark Grammar(private)
@interface Grammar(private)  //(在@implementation上面)- (void)privateMethod;      //私有方法(对象实例方法)
@end#pragma mark -
#pragma mark Grammar

@implementation Grammar

@synthesize publicString;  //公有成员 (在@implementation下面)
- (id)init
{
    if((self = [super init]))
    {
        if(publicString == nil)
        {
            publicString = [[NSString alloc] init];
        }
       
        if(protectedString == nil)
        {
            protectedString = [[NSString alloc] init];
        }
       
        if(privateString == nil)
        {
            privateString = [[NSString alloc] init];
        }
       
        if(staticString == nil)
        {
            staticString = [[NSString alloc] init];
        }
    }
   
    return self;
}

- (void)dealloc
{
    [publicString release];
    [protectedString release];
    [privateString release];
   
    [super dealloc];
}

#pragma mark -
#pragma mark Public Method

+ (void)staticMethod
{
}

- (void)publicMethod
{
}

#pragma mark -
#pragma mark Private Method

- (void)privateMethod
{
}

@end

KUKA 虚拟调试实战——打通Simpro4.1与OfficeLite8.6的通信与实时控制链路 本文详细介绍了KUKA虚拟调试实战,重点解析如何打通Simpro4.1与OfficeLite8.6的通信与实时控制链路。通过环境搭建、权限配置、机器人型号匹配等关键步骤,帮助工程师高效完成机器人轨迹规划和PLC联锁逻辑验证,大幅降低真机调试风险。文章还提供了典型报错解决方案和实时控制优化技巧,适用于工业机器人仿真与培训场景。 阅读详情

相关推荐

HyperLedger Fabric实战(一):基础环境构建

简介 本文将介绍从一台裸机上面如何构建出一个可用的Fabric网络(单机版,非测试网络)。 基础环境构建 Fabric组件安装

yindarui 1万+

[原创]Objective-C语言, 如何定义public和private的方法和变量?

根据本人的记忆力需要, 记录Objective-C类与C++相类似的概念. 私有方法, 私有变量, 公有方法, 公有变量, 的写法. 这样就不用每次都翻书了.

其实我不是代码教父,我只是猪头三 2867

GPT注册与使用全流程详解:从零到一的实战指南

本文详细介绍了GPT的注册与使用全流程,从认识GPT作为智能对话助手开始,到注册前的设备与环境准备、手把手完成账号注册、首次使用指南以及进阶使用技巧。文章还涵盖了安全使用与注意事项,帮助用户从零开始高效利用GPT提升工作效率和内容创作能力。

weixin_33843409的博客 389

Objective-C中@private、@protected、@public 解析

指令意思@private作用范围只能在自身类@protected作用范围在自身类和继承自己的子类,什么都不写,默认是此属性。@public作用范围最大,在任何地方

qq_40717889的博客 429

【Ragflow】9.问答为什么比搜索响应慢?从源码角度深入分析

前几天看到有群友提到一个现象:Ragflow的搜索界面的问答速度很快,但聊天界面的问答速度很慢,究竟是什么原因?在深入挖掘源码之后,逐渐发现了问题的答案。

兴趣使然的创作者 2902

保姆级教程:在Ubuntu 20.04上搞定pybind11,解决‘找不到头文件’的坑

本文提供了一份详细的Ubuntu 20.04下pybind11配置指南,重点解决常见的'找不到头文件'问题。从环境准备、安装策略到三种专业解决方案(修改CMakeLists.txt、环境变量方案、绝对路径包含),帮助开发者高效搭建C++与Python的桥梁。

weixin_28829325的博客 284

继承 Objective-C中public、protected、private的使用

继承 Objective-C中public、protected、private的使用 property是Objective-C的关键词,与@synthesize配对使用,用来让编译好器自动生成与数据成员同名的方法声明。@synthesize则是用来生成对应声明方法的实现。 @dynamic   不自动生成setter/getter方法,程序员自己写 (类别添加属性的

guo13的专栏 578

MCU工程迁移实战:从STM32到MSPM0L1306的完整指南

在嵌入式系统开发中,MCU工程迁移是开发者常面临的核心挑战,涉及从旧平台向新芯片的完整适配。其原理在于不同MCU在硬件架构、外设寄存器映射、时钟树及开发工具链上存在差异,迁移的本质是将应用逻辑与底层硬件实现解耦。这一过程的技术价值在于提升代码复用性、降低硬件切换成本,并确保产品能快速响应供应链或技术栈变化。典型应用场景包括产品升级换代、芯片缺货替代以及技术生态统一。本文以TI MSPM0L1306为例,详解如何通过对比清单分析、DriverLib API替换及分步调试,高效完成从STM32等平台到Arm C

weixin_27625589的博客 330

Objective-C基础之权限修饰符private, protected和public

Objective-C基础之权限修饰符private, protected和public

流浪菜鸟 1788

TIBCO Spotfire 入门指南

数据分析工具 - TIBCO Spotfire 入门指南(一) 文章目录数据分析工具 - TIBCO Spotfire 入门指南(一)前言一、Sportfire 是什么?二、使用Sportfire 创建一个简单的数据分析模型1.设置分析(加载数据)2.编辑数据源3.创建图表3.1 创建交叉表3.2 创建饼图3.3 创建树形图3.4 创建散点图3.5 创建自定义筛选器总结 前言 通过对本指南的学习,你可以了解到如何开始用TIBCO Sportfire分析数据,并能详细了解您可以做什么以及怎么做 一、Spo

kaiakai111的博客 1万+

基于SAGE算法的宽带信道参数估计算法的MATLAB仿真

本文将介绍如何使用MATLAB进行SAGE算法的仿真,以便更好地理解和应用该算法。SAGE算法是一种基于最大期望(Expectation-Maximization)方法的迭代估计算法,用于估计未知的参数。在宽带信道参数估计中,SAGE算法通过迭代优化来估计信道的传输函数。总结起来,本文介绍了如何使用MATLAB进行基于SAGE算法的宽带信道参数提取算法的仿真。通过以上步骤,我们可以得到估计的信道响应,并与真实信道响应进行比较。此外,SAGE算法还可以与其他信道估计算法相结合,以提高估计的准确性和性能。

CodeRoarX的博客 1075

Objective-C 中public、protected、private 的使用

Objective-C中,类的实例化变量的范围有@private、@protected、@public。他们代表的意思和C++中相同,只是前面添加了一个@符号。下面介绍一下他们代表的范围: 指令 意思 @private 作用范围只能在自身类 @protected 作用范围在自身类和继承自己的子类,什么都不写,默认是此属性。 @publi

逢个场,作个戏 649

2026年瑞芯微数字IC设计笔试试卷带答案

本文主要考察数字集成电路设计相关知识,包括低功耗设计、时序分析、跨时钟域处理、总线协议等内容。试题分为单选题、多选题、代码设计题和简答题四部分。 单选题涉及门控时钟降低动态功耗、静态时序分析的限制、跨时钟域同步方案、时序违例修复方法、AHB总线信号、异步FIFO设计、半导体工艺电阻特性、二进制数转换、同步/异步复位比较以及分频电路设计等知识点。 多选题重点考查动态功耗优化技术、亚稳态特性、异步FIFO设计规范、Verilog可综合代码编写要求以及AXI总线协议特点等。 代码设计题要求实现一个同步FIFO和3

Open 215

Objective-C中public、protected、private的使用[转]

1.@public,@protected,@private个人觉得@public和@protected并没有很明确的区别,在他们作用范围内的对象,如果不将对象设置成@property,则该对象相当于 protected对象,只有子类和本身可以访问该对象;如果将对象设置成@property,则可以使使用者访问该对象。@private,顾名思义, 这里声明的就是私有对象 注:可以通过指针的方式访问。...

weixin_30500473的博客 135

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Objective-C中也存在public、protected、private的使用

 与C++相同,Objective-C中也存在public、protected、private的使用,只不过是表现形式不同罢了,在这里做一个简要的总结。 1.@public,@protected,@private 个人觉得@public和@protected并没有很明确的区别,在他们作用范围内的对象,如果不将对象设置成@property,则该对象相当于 protected对象,只

wxlee99的博客 229

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Objective-C的Public, Protected, Private变量和方法的使用

.h文 #import <Foundation/Foundation.h> @interface Grammar : NSObject {   /* 变量缺省的作用域是Protected */   NSString* protectedVariable1;   @public   NSString* publicVariable1; ...

weixin_30902675的博客 355

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

OC中public、protected、private 的区别?

private:只能被声明它的类访问     protected:能被声明它的类和子类访问(OC里面的属性默认为protected)     public:可以在任何地方访问

635

Objective-C 访问权限 public private protect

访问权限:Objective-C也像C++一样有 public private protect 三种访问权限,默认的权限是 protected。 public 关键字修饰资源,可以在任何地方访问。 protected 关键字修饰资源,可以在类内和其子类里访问。 private 关键字修饰资源,只能在类内访问。外部访问类的public成员方法: a->publicVar = 5;   //其

yuanya的专栏 1615

Objective C 方法和变量详解

Objective-C方法对象及其使用是本文要介绍的内容,主要包括 static 对象、static 、public 、private 方法。Objective-C 方法,Objective-C 对象,Objective-C私有方法,Objective-C 静态方法。具体内容来看本文详解。 1、@public,@protected,@private 个人觉得@public和@prote

yuyezhulan的专栏 476

Objective-c 访问控制

在Objective-c中定义类时,也可以使用类似于C++中public、private来修饰成员变量,如下: [cpp] view plaincopy @intterfaceTest:NSObject{ @public inti; intj; @protected floatm; floatn; ...

weixin_30785593的博客 90

OC中的方法

实例变量的可见度:一共有三种    @public:公共的,在任何文件中都可以访问.(访问方式是通过对象+指向操作符+实例变量,例如:per->name)    @protectde:受保护的,有一定的访问权限,只允许再本类文件以及子类文件中访问,其他文件不可以访问.    @private:私有的,只允许再本类文件中访问,不可以在子类文件 以及其他文件中访问.    默认的可见度是@

u013360565的专栏 531
上一篇: xcode armv7 armv7s arm64 类型, 区分, 概念
下一篇: IOS之地图和定位应用开发
光速之年
博客等级 码龄12年 31粉丝 97原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值