GVKun编程网logo

ios – Objective C接口,委托和协议(objective-c)

1

如果您对ios–ObjectiveC接口,委托和协议感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于ios–ObjectiveC接口,委托和协议的详细内容,我们还将为您解答o

如果您对ios – Objective C接口,委托和协议感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于ios – Objective C接口,委托和协议的详细内容,我们还将为您解答objective-c的相关问题,并且为您提供关于C接口,继承,多态、iOS 17.6和 iOS 18哪个更适合升级 iOS 17.6和 iOS 18升级建议、iOS 18发布啦!iOS 18好吗?iOS 18值得更新吗?iOS 18beta版、iOS 开发 iOS 应用开发 iOS 软件定制 iOS 电子点餐的有价值信息。

本文目录一览:

ios – Objective C接口,委托和协议(objective-c)

ios – Objective C接口,委托和协议(objective-c)

所以我试图围绕Objctive-C接口,代理和协议.
所以我有一个问题:

委托是否必须在单独的文件中,或者它是否是您班级中定义的方法?

协议就像java接口吗?这是我理解它的方式,如果你使用这个协议它基本上让你实现方法.

我仍然对界面感到困惑.我很确定它们与java中的接口没有任何相似之处.也许它只是一个将在类中实现的变量声明.

解决方法

>当另一个对象执行某些操作时,将通知代理点.例如,您的一个对象想要知道窗口正在关闭,因此您将其注册为窗口的委托并实现windowWillClose:方法.它将由NSWindow适当调用.因此委托方法通常在另一个类中定义.在某一点上,它允许您扩展类的功能而无需对其进行子类化.
>(编辑:请参阅Daniel关于协议的答案.)
> @interface是类声明,其中列出了成员变量和方法.它位于.h中,如果需要使用该类,则导入.h.方法的代码位于.m文件中的@implementation中.在 Java中它不同,.java文件有两个目的.

C接口,继承,多态

C接口,继承,多态

想象一下这种情况:

> interface I1:m1(),由C1类实现
>接口I2:m2(),由C2类实现
> interface I3:m3(),由C3类实现

我想定义带参数arg的函数.

void f1(I1 arg) {
    use m1()
}

void f2([I1,I2] arg) {
    use m1() and m2()
}

void f3([I2,I3] arg) {
    use m2() and m3()
}

然后我想定义:

>一个“联合”接口I123,它具有所有方法,由C123实现
>“union”类C123,它继承现有类C1,C2,C3中的已实现方法.

然后我想实例化C123并将其与f1,f2,f3一起使用.

C123 obj;

f1(obj);
f2(obj);
f3(obj);

问题

>这可能在C?
>没有接口可以吗?例如.函数f2取[C1,C2]而不是[I1,I2].

代码

#include <string>
#include <iostream>

using namespace std;

class C1 {
protected:
  int i;
public:
  int getI() const { return i; }
  void setI(int i_) { i = i_; }
};

class C2 {
protected:
  string s;
public:
  string getS() const { return s; }
  void setS(string s_) { s = s_; }
};

class C3 {
protected:
  float f;
public:
  float getF() const { return f; }
  void setF(float f_) { f = f_; }
};

class C23 : public C2,public C3 {};
class C123 : public C1,public C2,public C3 {};

void f3(C23 arg) {
  arg.setS(to_string(arg.getF()));
}


int main() {

  C123 obj;

  f3(obj);

  std::cout << obj.getS();
}

错误消息

a.cc: In function ‘int main()’:
a.cc:42:9: error: Could not convert ‘obj’ from ‘C123’ to ‘C23’
   f3(obj);

解决方法

  1. Is this possible in C++?

是的,可以在C中做到这一点.

Example solution using interfaces

#include <string>
#include <iostream>

using namespace std;

class I1 {
public:
    virtual int getI() const = 0;
    virtual void setI(int i) = 0;
};

class I2 {
public:
    virtual string getS() const = 0;
    virtual void setS(string s) = 0;
};

class I3 {
public:
    virtual float getF() const = 0;
    virtual void setF(float f) = 0;
};

class C1 : public I1 {
protected:
    int i;
public:
    int getI() const { return i; }
    void setI(int i_) { i = i_; }
};

class C12 : public I1,public I2 {
protected:
    int i;
    string s;
public:
    int getI() const { return i; }
    void setI(int i_) { i = i_; }
    string getS() const { return s; }
    void setS(string s_) { s = s_; }
};

class C123 : public I1,public I2,public I3 {
protected:
    int i;
    string s;
    float f;
public:
    int getI() const { return i; }
    void setI(int i_) { i = i_; }
    string getS() const { return s; }
    void setS(string s_) { s = s_; }
    float getF() const { return f; }
    void setF(float f_) { f = f_; }
};

template<class T>
void f1(const T& c1)
{
    cout << "f1:\n";
    cout << "  getI: " << c1.getI() << endl;
}

template<class T>
void f2(const T& c12)
{
    cout << "f2:\n";
    cout << "  getI: " << c12.getI() << endl;
    cout << "  getS: " << c12.getS() << endl;
}

template<class T>
void f3(const T& c23)
{
    cout << "f3:\n";
    cout << "  getS: " << c23.getS() << endl;
    cout << "  getF: " << c23.getF() << endl;
}

void test()
{
    C1 c1;
    c1.setI(1);
    f1(c1);

    cout << "\n===== " << endl;

    C12 c12;
    c12.setI(12);
    c12.setS("str12");
    f1(c12);
    f2(c12);

    cout << "\n===== " << endl;

    C123 c123;
    c123.setI(123);
    c123.setF(1.23f);
    c123.setS("str123");
    f1(c123);
    f2(c123);
    f3(c123);

    cout << "\n===== " << endl;
}

int main()
{
    test();
}
  1. Is it possible without interfaces? Eg. function f2 would take [C1,C2] instead of [I1,I2].

是的,没有接口就可以做到这一点.

Solution using virtual inheritance (without using interfaces):

#include <string>
#include <iostream>

using namespace std;

class C1 {
protected:
    int i;
public:
    int getI() const { return i; }
    void setI(int i_) { i = i_; }
};

class C2 {
protected:
    string s;
public:
    string getS() const { return s; }
    void setS(string s_) { s = s_; }
};

class C3 {
protected:
    float f;
public:
    float getF() const { return f; }
    void setF(float f_) { f = f_; }
};

class C12 : public virtual C1,public virtual C2
{
};

class C23 : public virtual C2,public virtual C3
{
};

class C123 : public virtual C1,public virtual C12,public virtual C23
{
};


void f1(const C1& c1)
{
    cout << "f1:\n";
    cout << "  getI: " << c1.getI() << endl;
}

void f2(const C12& c12)
{
    cout << "f2:\n";
    cout << "  getI: " << c12.getI() << endl;
    cout << "  getS: " << c12.getS() << endl;
}

void f3(const C23& c23)
{
    cout << "f3:\n";
    cout << "  getS: " << c23.getS() << endl;
    cout << "  getF: " << c23.getF() << endl;
}

void test()
{
    C1 c1;
    c1.setI(1);
    f1(c1);

    cout << "\n===== " << endl;

    C12 c12;
    c12.setI(12);
    c12.setS("str12");
    f1(c12);
    f2(c12);

    cout << "\n===== " << endl;

    C123 c123;
    c123.setI(123);
    c123.setF(1.23f);
    c123.setS("str123");
    f1(c123);
    f2(c123);
    f3(c123);

    cout << "\n===== " << endl;
}

int main()
{
    test();
}

一些解释.如果你需要你的f2只采用C1和C2(没有C3)那么它必须是在C1和C2上都继承的单独类型. f3也是如此.然后,如果您遵循该逻辑并在不使用虚拟继承的情况下创建类C12和C23,那么现在应该从C12和C23继承的C123将以C2的多个副本结束,当您调用f2和f3时,您将获得不同的值GETS.虚拟继承确保继承层次结构中只有一个类的副本.

a “union” class C123 which inherits implemented methods from existing classes C1,C3

Solution that use virtual inheritance and interfaces

#include <string>
#include <iostream>

using namespace std;

class I1 {
public:
    virtual int getI() const = 0;
    virtual void setI(int i) = 0;
};

class I2 {
public:
    virtual string getS() const = 0;
    virtual void setS(string s) = 0;
};

class I3 {
public:
    virtual float getF() const = 0;
    virtual void setF(float f) = 0;
};

class I12 : virtual public I1,virtual public I2 {};
class I23 : virtual public I2,virtual public I3 {};
class I123 : virtual public I12,virtual public I23 {};

class C1 : virtual public I1 {
protected:
    int i;
public:
    int getI() const { return i; }
    void setI(int i_) { i = i_; }
};

class C2 : virtual public I2 {
protected:
    string s;
public:
    string getS() const { return s; }
    void setS(string s_) { s = s_; }
};

class C3 : virtual public I3 {
protected:
    float f;
public:
    float getF() const { return f; }
    void setF(float f_) { f = f_; }
};

class C12 : public I12,public C1,public C2 {};
class C123 : public I123,public C3 {};

void f1(const I1& c1)
{
    cout << "f1:\n";
    cout << "  getI: " << c1.getI() << endl;
}

void f2(const I12& c12)
{
    cout << "f2:\n";
    cout << "  getI: " << c12.getI() << endl;
    cout << "  getS: " << c12.getS() << endl;
}

void f3(const I123& c23)
{
    cout << "f3:\n";
    cout << "  getS: " << c23.getS() << endl;
    cout << "  getF: " << c23.getF() << endl;
}

void test()
{
    C1 c1;
    c1.setI(1);
    f1(c1);

    cout << "\n===== " << endl;

    C12 c12;
    c12.setI(12);
    c12.setS("str12");
    f1(c12);
    f2(c12);

    cout << "\n===== " << endl;

    C123 c123;
    c123.setI(123);
    c123.setF(1.23f);
    c123.setS("str123");
    f1(c123);
    f2(c123);
    f3(c123);

    cout << "\n===== " << endl;
}

int main()
{
    test();
}

所有解决方案都应产生此输出:

f1:
  getI: 1

=====
f1:
  getI: 12
f2:
  getI: 12
  getS: str12

=====
f1:
  getI: 123
f2:
  getI: 123
  getS: str123
f3:
  getS: str123
  getF: 1.23

=====

iOS 17.6和 iOS 18哪个更适合升级 iOS 17.6和 iOS 18升级建议

iOS 17.6和 iOS 18哪个更适合升级 iOS 17.6和 iOS 18升级建议

iOS迭代速度越来越快,不知不觉iOS 18beta版发布距今已经25天了,期间苹果公司也为用户提供了iOS 17.6beta版进行选择,那哪个版本更适合升级呢?或者说,用户如何正确选择适合自己的版本升级呢?

iOS 17.6和 iOS 18哪个更适合升级

iOS 18 beta版

iOS 18作为苹果公司即将问世的最强AI系统,它的性能和运算能力毋庸置疑的强大,无论是搭载GPT的“完全体”还是国内的“削减版”,都会让苹果手机提高使用表现,那iOS 18值得所有用户都升级吗?一起看看实际测试:

iOS 18beta:测试机型 iPhone 15 Pro Max

性能跑分:1590000分

机身温控:最高温44.3°

游戏性能:平均帧率103.2、平均延迟63。轻微掉帧

综合续航2小时综合使用耗电25%

音质表现:采用DSD1.47G 无损HIFI测试

低音:iOS 18beta=iOS 17.5beta3>iOS17.4RC>iOS 17.5.1>iOS 17.5

中音:iOS 18beta=iOS 17.5beta3>iOS17.4RC>iOS 17.5.1>iOS 17.5

人声:iOS 18beta>iOS 17.5.1>iOS 17.5beta3>iOS17.4RC>iOS 17.5

高音:iOS 18beta>iOS 17.5.1>iOS 17.5beta3>iOS17.4RC>iOS 17.5

音质表现 iOS 18 beta版恢复级加强。

缺点:

1、锁屏新消息不通知

2、APP闪退、卡顿,掉帧

3、部分快捷指令删除

4、灵动岛无法正常顺畅使用

5、横屏电显bug

6、温控较差

7、信号不稳定

8、控制中心不稳定

iOS 18beta2版:测试机型 iPhone 15 Pro Max

性能跑分:1533529分

机身温控:游戏最高42°

游戏性能:平均帧率110,延迟65

综合续航:2小时综合使用耗电29%

音质表现:采用DSD1.47G 无损HIFI测试

低音浑厚澎湃

中音圆润饱满

人声清澈透亮

高音通透微呲

缺点:

1、续航较差

2、温控较差

3、汉化不完整

4、杀后台严重

5、轻微闪退、卡顿

6、界面白图标

7、控制中心Bug

8、部分快捷指令无法使用

9、游戏掉帧,过度画面掉帧

推荐升级人群:喜欢体验新功能、手机流畅度,喜欢听歌且不在意Bug的用户可以直接升级(Xs Max-14基础款目前测试,流畅度很不错),游戏党推荐60Hz机型升级,120Hz高刷游戏党和主力机型党不推荐升级,版本Bug比较多可能会影响日常使用,不太友好。

推荐升级版本:iOS 18beta2版 ,虽然这个版本的续航表现比较差,但修复了影响日常使用的BUG,音质表现非常好,手机的流畅度也非常好。

iOS 17.6beta版

iOS 17.6作为iOS 17系列的更新版本,其主要目的是为了修复系统的漏洞,同时在性能和功能上进行优化调整。据爆料消息称:iOS 17.6正式版可能为iOS 17系列最后一个版本,其版本性能上会承接部分iOS 18的能力,使得iOS 17.6beta版目前的性能表现同样极其强悍,iOS 17.6正式版是否能在保持性能的同时做进一步续航优化,成为养老版呢?

iOS 17.6beta:测试机型 iPhone 15 Pro Max

性能跑分:1528844分

机身温控:游戏最高41°

游戏性能:平均帧率118,延迟60

综合续航:2小时综合使用耗电27%

音质表现:采用DSD1.47G 无损HIFI测试

低音:iOS 18=iOS 17.6beta>iOS 17.5.1

中音:iOS 18=iOS 17.6beta>iOS 17.5.1

人声:iOS 18=iOS 17.6beta>iOS 17.5.1

高音:iOS 18>iOS 17.6beta=iOS 17.5.1

缺点:

1、版本不够稳定

2、部分用户蓝牙耳机播放异常

3、外放音量最大化有杂音

4、温控较差

iOS 17.6beta2:测试机型 iPhone 15 Pro Max

性能跑分:1515855分

机身温控:游戏最高46.1°

游戏性能:平均帧率110,延迟62

续航能力:2小时综合使用耗电29%

音质表现:采用DSD1.47G 无损HIFI测试

低音:iOS 18beta2>iOS 17.6beta2>iOS 17.6beta>iOS 17.5.1

人声:iOS 18beta2=iOS 17.6beta2>iOS 17.6beta>iOS 17.5.1

中音:iOS 18beta2=iOS 17.6beta2>iOS 17.6beta>iOS 17.5.1

高音:iOS 18beta2>iOS 17.6beta2>iOS 17.6beta>iOS 17.5.1

iOS 17.6beta2虽然音质进行了加强,低音部分极其接近iOS 18beta2,甚至人声和乐器部分处理的效果更细腻更清晰,但缺点是外放音量最大化时出现杂音和炸麦,音量处于70%及以下并不会出现杂音等问题。

缺点:

1、图片显示问题

2、部分App闪退

3、锁屏自定义编辑

4、光标移动与换行功能

5、动态地球壁纸故障

6、暂不支持部分音乐格式

7、横屏电量不同步

8、杀后台较为严重

9、温控较差

推荐升级人群:不想升级iOS 18版本、旧机型想选择养老版本、游戏党用户。iOS 17.6beta版,目前的整体性能属于iOS 17系列的第一梯队。

推荐升级版本:iOS 17.6beta版,虽然版本的温控做的不太行,但是其他各方面的表现还是很优秀的,可以作为iOS 17.6正式版前的首选。

iOS 18发布啦!iOS 18好吗?iOS 18值得更新吗?iOS 18beta版

iOS 18发布啦!iOS 18好吗?iOS 18值得更新吗?iOS 18beta版

ios 18 横空出世,带来了一系列激动人心的新功能。您是否好奇 ios 18 的亮点,它是否值得升级?php小编西瓜带来 ios 18 的全面解读,详细介绍了它的新特性、改进和已解决的错误。如果您正在考虑升级到 ios 18,请继续阅读以了解它的优缺点,并决定它是否适合您的设备和需求。

iOS 18 beta版终于发布啦!iOS 18此次更新是否与预期一样呢? iOS 18更新了哪些内容呢?是否真的值得果粉用户升级呢?

iOS 18的更新内容涵盖了多个方面,旨在提升用户体验和个性化设置。以下是iOS 18的更新内容概览:

  • 定制主屏幕:

    • 用户可以自由移动应用程序,按照个人喜好调整主屏幕布局。

    • 图标支持深色模式,用户可以为图标着色,打造独特的外观。

    • 应用程序可以随意放置,深色模式APP有更深度的适配,且有色系可选,整体可调节成一种色系。

  • 优化控制中心:

    • 控制中心进行了重新设计,新增了多款快捷组件,用户可以根据需要选择和排列。

    • 控件页面支持多页布局,用户可滑动访问控制中心的其它页面。

    • 控制中心界面设计已扩展为多页布局,允许用户将不常访问的功能移动到次级页面。

  • 隐私与安全:

    • iOS 18支持给APP上锁,支持面容识别,同时也能隐藏APP,以加强用户的隐私权限。

    • 用户可以专门控制第三方App可以访问哪些通讯录,进一步保障数据安全。

  • 信息应用更新:

    • 发送的字体样式和表情有更多自定义选项。

    • 支持稍后发送功能。

    • 在无网情况下,iPhone 14及后续机型支持卫星直发。

  • 其他内置应用更新:

    • 邮箱应用进行了更新,分类和摘要功能提高了效率。

    • 钱包应用支持两个手机一碰即可相互转账。

    • 地图应用带来了新的地形图。

    • 相册应用引入了智能功能,查找照片和照片分类更加精准。

    附上iOS 18升级方法:

    ※1、刷机前请做好重要数据资料的备份,或勾选“保留用户资料刷机”,防止重要资料丢失;


    ※2、请确保移动设备未开启激活锁,或者知道 ID 锁帐号、密码,否则刷机后可能会无法激活设备;


    ※3、设备升级到 iOS 18后,将无法再降级到“苹果已关闭验证”的固件版本,即使之前使用备份了 SHSH 也不能降级。

    打开最新版电脑端,用数据线把手机设备连接到电脑。点击上方“智能刷机”进入到“一键刷机”界面,连接成功会自动匹配iOS 18固件,选择“保留用户资料刷机”立即刷机。

    以上就是iOS 18发布啦!iOS 18好吗?iOS 18值得更新吗?iOS 18beta版的详细内容,更多请关注php中文网其它相关文章!

    iOS 开发 iOS 应用开发 iOS 软件定制 iOS 电子点餐

    iOS 开发 iOS 应用开发 iOS 软件定制 iOS 电子点餐

    如何开发 ios 应用程序

    开发 iOS 应用程序既有趣又回报丰厚,如果您是一位新手,自然想知道从哪里入手。本路

    线图提供了 iOS 应用程序开发的绝佳起点。在 Mac 电脑上,您可以创建在 iPad、iPhone

    和 iPod touch 上运行的 iOS 应用程序。遵循本路线图以了解如何取得开发工具,理解主要

    概念及最佳实践,并学会查找更多信息。


    继续遵循此路线图,您将使用到 Xcode 和 iOS SDK(Apple 提供的开发工具)。您将了解

    Objective-C(驱动所有 iOS 应用程序和框架的程序设计语言)的编程基础知识,并将探索

    Cocoa Touch 框架。您将创建一个简单的 iOS 应用程序,并学会在设备上进行测试。最后

    ,您还会学到如何将应用程序提交到 App Store。

    上海诸君信息科技有限公司致力于一流的创新软件产品设计定制,服务客户遍及全球,公司有多款精心设计的软件产品,如诸君工作系统、餐饮一体化管理系统、PadOrder 电子菜谱、CDM 文档管理系统、清洁能源参数优化系统、银行 iPad 文件管理系统等。

    我们提供优秀的综合软件与游戏开发与咨询、管理软件定制开发、点单软件与移动客户端 (WP,Android,iOS) 软件开发,为全球多家软件公司、国企、医疗、能源机构提供优秀的应用解决方案,欢迎咨询!

    我们为海内外客户提供先进的软件解决方案,因况制宜、使用最适合的前沿技术为客户解决问题,拥有强大的团队、熟悉前沿的开发技术。

    我司拥有领先的诸君支持系统,使用前所未有的方式高效提供解决方案、敏捷处理客户反馈。

    官网:http://uniguyit.com
    手机:13611968046(杨经理)
    QQ:2208934488
    电邮:Service@uniguyit.com


    关于ios – Objective C接口,委托和协议objective-c的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于C接口,继承,多态、iOS 17.6和 iOS 18哪个更适合升级 iOS 17.6和 iOS 18升级建议、iOS 18发布啦!iOS 18好吗?iOS 18值得更新吗?iOS 18beta版、iOS 开发 iOS 应用开发 iOS 软件定制 iOS 电子点餐的相关知识,请在本站寻找。

    本文标签: