首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我不能在objective C中将true赋值给BOOL?

在Objective-C中,BOOL是一个基本数据类型,它只能存储两个值:YES和NO,分别代表真和假。在Objective-C中,true并不是BOOL类型的有效值,因此不能将true赋值给BOOL。

Objective-C中的BOOL类型实际上是typedef定义的一个宏,它被定义为signed char类型,只占用一个字节的内存空间。它的取值范围是0和1,其中0代表NO,1代表YES。这种设计是为了与C语言的布尔类型兼容。

如果你想将true赋值给BOOL类型的变量,可以使用宏定义来实现:

#define MY_BOOL_TRUE ((BOOL)1)

然后可以将MY_BOOL_TRUE赋值给BOOL类型的变量。

在使用BOOL类型时,通常可以直接使用YES和NO来表示真和假,而不需要使用true和false。这是Objective-C语言的约定和惯例。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):提供可扩展的计算能力,适用于各种应用场景。详情请参考:https://cloud.tencent.com/product/cvm
  • 腾讯云对象存储(COS):提供安全、稳定、低成本的云端存储服务,适用于存储和处理各种非结构化数据。详情请参考:https://cloud.tencent.com/product/cos
  • 腾讯云人工智能(AI):提供丰富的人工智能服务,包括图像识别、语音识别、自然语言处理等,帮助开发者构建智能化应用。详情请参考:https://cloud.tencent.com/product/ai
  • 腾讯云物联网(IoT):提供全面的物联网解决方案,包括设备接入、数据管理、应用开发等,帮助实现设备互联互通。详情请参考:https://cloud.tencent.com/product/iot

请注意,以上链接仅供参考,具体产品选择应根据实际需求进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Objective-C属性(property)的特性(attribute)

现在大伙儿慢慢转向苹果的新开发语言Swift,似乎亦不必花太多时间在Objective-C上。...因此,写getter和setter,可算是Objective-C中「约定俗成」的做法了。...Objective-C2.0之后: 庆幸的是,程序员都喜欢「偷懒」,所以就有了2006年Objective-C2.0中的新语法:Properties。...默认值是atomic(也就是写的话,默认是atomic)。 atomic(默认值) 使用atomic,在一定程度上可以保证线程安全,「atomic的作用只是getter和setter加了个锁」。...这样对比,atomic就显得比较鸡肋了,因为它并不能完全保证程序层面的线程安全,又有额外的性能耗费(要对getter和setter进行加锁操作,验证过,在某个小项目中将所有的nonatomic删除,内存占用平均升高

1.9K30

Whats New in LLVM 9

觉得 LLVM 9 的亮点如下: 支持 Objective-C API 可用性检查 新增一些对隐患代码的静态分析检查和 warning 更快的 LTO,使其可以真正使用 API Availability...如今,Objective-C 也有这项功能啦。...因为我们想要的是把新的值 mutableCopy 后赋值属性,然而内存管理语义中只有 copy 却没有 mutableCopy。而现在 LLVM 可以检查出这种情况。...debug 时从汇编中可以看出:调用方调用 objc_retainAutoreleasedReturnValue(),方法返回时调用 objc_autoreleaseReturnValue()(如果返回值没有赋值变量...具体原理通过查看 Objective-C 源码可以得出(列举的是 objc-709): objc_autoreleaseReturnValue() 试图优化流程,如果上一层调用方会调用 objc_retainAutoreleasedReturnValue

2.4K100
  • swift4.0语法杂记(精简版)

    取消了Objective-C中的指针等其他不安全访问的使用 使用点语法来调用属性或者函数 去除了NS前缀 3、为什么要学习swift swift作为面向协议语言,不仅能写移动端,也可以做到搭建服务器端。...类型 与其他语言一样,Bool类型表示的就是真假,但是不同于Objective-C,swift中用true和false来表示真假。...五、可选类型 在Objective-C开发中,如果一个变量暂时不会使用到,可以将它赋值为0或者赋值为空,而在swift中,nil是一个特殊的类型,如果它和真实类型匹配是不能进行赋值的。...它将变量赋值一个临时变量,在这个操作中会做两步操作:首先判断变量是否有值,如果没有值,则直接执行大括号里面的内容;如果有值,系统会自动将变量进行解包,并且将解包后的结果,赋值临时变量。...//对象的属性必须赋值,赋值会报错的哦 } let p = Person() 2、类的属性赋值 可以直接赋值,也可以通过KVC进行赋值 p.age = 10 p.name = "llx" if let

    15.4K90

    Swift解读专题二——基本类型 原

    在Swift中,Bool被作为一种独立的数据类型,提供true和false两种值。...示例如下: var boolVale:Bool = true 五、元组         元组是Swift语言十分重要的一个特点,它允许开发者将任意个不同类型的数据组合成一个数据类型,这也是Swift语言的一个强大之处...例如如下示例代码可以创建一个元组: var tuples:(param1:Int,param2:Float,param3:String,param4:Bool) = (3,3.14,"圆周率",true...= 1 Swift中的nil与Objective-C中的nil意义并不相同,在Objective-C中,nil代表指针指向一个不存在的对象,Swift中的nil并不是指针,它是一种抽象类型的值,在Swift... {     print(optionalValue) } Swift还提供了if let语法进行Optional值得绑定,示例如下: //如果optionalValue值不为nil,则会将拆包后的值赋值

    71030

    OC - 属性关键字和所有权修饰符

    2.修饰基本数据类型,如 NSInteger、BOOL、int、float 等;3.修饰对象类型时,增加其引用计数;4.会产生悬垂指针(悬垂指针:assign 修饰的对象在被释放之后,指针仍然指向原对象地址...1.4 可空性 Apple Blog:Nullability and Objective-C 苹果在 Xcode 6.3 引入的一个 Objective-C 的新特性nullability annotations...这样就会造成一个问题:在 Swift 与 Objective-C 混编时,Swift 编译器并不知道一个 Objective-C 对象到底是optional还是non-optional,因此这种情况下编译器会隐式地将...Objective-C 的对象当成是non-optional。...引入nullability annotations一方面为了让 iOS 程序员平滑地从 Objective-C 过渡到 Swift,另一方面也促使开发者在编写 Objective-C 代码时更加规范,减少同事之间的沟通成本

    1.4K31

    实践-小细节Ⅳ

    既然是加密,那肯定是希望别人知道的消息,所以只有才能解密,所以可得出: 公钥负责加密,私钥负责解密; 同理,既然是签名,那肯定是希望有人冒充发消息,只有才能发布这个签名,所以可得出:...void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay; 这两个方法只能在主线程中执行...for Objective-C objects Nil (Class)0 literal null value for Objective-C classes NSNull...NSNull是一个对象,而nil、Nil、NULL只是指针赋空值。 在另外,一个赋值为nil的对象发送消息,不会产生异常。...当然一个赋值为Nil、NULL的对象发送消息也不会产生异常,这个在例子中已经证实。故根据此条结论的总结为:nil、Nil、NULL目的都是一个指针赋值为空,空指针发送消息不会产生异常。

    80610

    Swift 基础之可选

    CObjective-C 中并没有可选这个概念。最接近的是 Objective-C 中的一个特 性,一个方法要不返回一个对象要不返回 nil,nil 表示“缺少一个合法的对象”。...然而,这只 对对象起作用——对于结构体,基本的 C 类型或者枚举类型不起作用。对于这些类型,Objective-C 方法一般会返回一个特殊值(比如 NSNotFound)来暗示值缺失。...如果可选有值,结果是 true;如果没有值,结果是 false。 当你确定可选包确实含值之后,你可以在可选的名字后面加一个感叹号(!)来获取值。这个惊叹号表示“知道这个可选有值,请使用它。”...三:nil 你可以可选变量赋值为 nil 来表示它没有值: var serverResponseCode: Int?...// surveyAnswer 被自动设置为 nil 注意:Swift 的 nil 和 Objective-C 中的 nil 并不一样。

    78330

    Swift解读专题三——基础运算符 原

    二、赋值运算符         赋值运算符用=符号表示,用于初始化或者更新一个量值,示例如下: //将字符串“hello world” 赋值变量str var str = "Hello, world"...//更新变量str的值 str = "new value" 如果赋值运算符的右边是一个元组,其也可以将元组进行分解赋值,示例如下: //对元组进行分解赋值 var (x,y) = (1,2) 与CObjective-C...Sring类型的数据是支持通过+运算符来进行拼接的,示例如下: var newStr = "hello"+"world" Swift中的%运算符比Objective-C更加强大,其除了支持整数的取余操作外...3  //tmp = tmp *3 tmp/=3  //tmp = tmp /3 tmp%=3  //tmp = tmp %3 五、比较运算符         Swift支持Objective-C中所有的比较运算符...三种逻辑运算符,逻辑运算符只能操作Bool值,示例如下: var one = true var two = false one&&two //false one||two //true !

    49920

    【iOS 开发】NSError ** 与 throws 的三个问题

    问题一:为什么有错误处理还要返回值?...error 再获取这个错误值,来看这个过程中有没有什么错误,那么通过 error == nil 不就可以知道是否执行成功吗,为什么需要 BOOL 返回值,这是一个冗余的设计吗?...另外,基于 Objective-C 的语言特性,这里我们无法阻止调用者对 error 参数传递 nil,但是这个方法在这种情况下依然需要告知调用者是否执行成功,所以返回值是一个必要的设计。...上面那个方法在 Swift 中是这样的: func removeItem(atPath path: String) throws 没有返回值 Objective-C 中为了对外部创建的 NSError...Int) { let temporaryA = a a = b b = temporaryA } 这实现了在函数中修改参数值,按照这种写法,是不是我们可以臆想出一种完全对应于 Objective-C

    1.9K20

    iOS 面试策略之语言工具-Swift

    本章节主要针对 iOS 的主流开发语言 Objective-C 和 Swift 进行分析和对比,同时也整理了 Xcode 编辑器的使用技巧和经验。...在 TIOBE 编程语言排行榜上的目前位列 12 位,超过 Ruby 并远远甩开其上代语言 Objective-C。...从性能上来说,它的速度是 Objective-C 的 2.6 倍,Python 的 8.4 倍。更重要的是,Swift 是一门开源的语言,它的质量和进步接受着整个业界的建议、监督、关注。...无论从哪个角度讲,Swift 都将取代 Objective-C,成为 iOS 开发的主流语言。 所以在面试中,我们会看到关于 Swift 的问题越来越多。...正确的实现方法如下: func ||(left: Bool, right: @autoclosure () -> Bool) –> Bool { if left { return true

    1.4K10

    深入浅出 Runtime(一):初识

    相关链接 Runtime 简介 Runtime 是一个用C、汇编编写的运行时库,包含了很多 C 语言的 API,封装了很多动态性相关的函数; Objective-C 是一门动态运行时语言,允许很多操作推迟到程序运行时再进行...Objective-C 是一门动态运行时语言 什么是编译时与运行时?...举例 对于 NSString *string = [[NSMutableArray alloc]init]; 编译时:编译器进行类型检查的时候,由于一个NSString类型的指针赋值的是一个NSMutableArray...对象,所以编译器会给出类型匹配的警告。...Objective-C 程序在三个不同的级别上与 Runtime 系统进行交互 通过 Objective-C 源代码; 通过 Foundation 框架中 NSObject 类定义的方法,如: // 根据

    1K20

    Objective-C实现链式编程语法(DSL)

    - Carlson, University of Wisconsin 前言 熟悉Objective-C这一门编程语言的人都知道,Objective-C中方法的调用都是通过中括号[]实现的。...这对于有其他编程语言经验的开发者而言,Objective-C无异于就是众多语言中的一朵奇葩。因为其他多数的高级语言方法调用都是以点语法.的形式实现的。...好在Objective-C在iOS4.0之后推出了block这个语法(相当于其他语言中的匿名函数)。我们可以利用block的来实现Objective-C方法的链式调用。...像这种用于特定领域的表达方式,我们叫做 DSL (Domain Specific Language),本文就介绍一下如何让Objective-C实现链式调用,其最终调用方式如下: DSLObject *...obj = DSLObject.new.name(@"ws").age(27).address(@"beijing"); 很明显,相比较传统的Objective-C的方法调用方式,使用点语法进行方法调用更加简洁连贯

    8.1K20

    Objective-C 中的点符号一定是恶魔吗?

    消息的点符号不仅仅是 Objective-C 代码的味道。告诉你,它是恶魔! 更新:最近改变了主意!请参阅的文章《接受的点符号...》...foo.bar = 10; 在 C 语言中,这段代码的作用显而易见:foo 要么是一个结构体,要么是一个联合体。它在给 foo 的 bar 字段赋值 10。...但为什么呢?"因为数组不是属性,而是方法"。哦,所以用括号还是用点取决于这个东西是不是属性?但不管用哪种方式,都是传递消息!为什么还要添加第二种消息传递语法呢?...让我们用点符号来取代方括号吧;这样看起来就像 Java 了,这样就能提高 Objective-C 的采用率。 但在接触 Objective-C 之前,并不是一名 Java 开发人员。...由于我看到的几乎所有 Objective-C 代码都使用点符号,意识到自己在逆流而行。

    10310

    有效的只读属性

    Objective-C 桥接 一些 API 设计人员可能希望通过将 Objective-C 方法导入作为属性来利用 Swift 的有效属性。...由于 Swift 有效属性只读特性限制,并且大部分 Objective-C 可失败的函数已经导入作为 Swiftthrows函数,在本提案中对Objective-C 桥接支持适用于 Swift 并发特性...本提案讨论 Objective-C 导入作为有效下标. 而且,将有效属性导出到 Objective-C 作为方法是以后的工作。...大多的效果说明符只能在 getter 方法声明之前,也就是 C 位置,这更在结构体里的一个方法很相似。...他们使用索引语法c[0]. 方法不可以被赋值,但是下标索引表达式可以。因此,相对属性来说,下标更接近去接受一个入参。

    1.8K60

    iOS 面试策略之经验之谈-面向协议的编程

    而 POP 恰好可以优雅得解决这些问题;其二,POP 可以保证 Swift 作为静态语言的安全性,而彼时 Objective-C 时代的 OOP,其动态特性经常会导致异常;其三,OOP 无法应用于值类型...相关的属性和方法被放入一个类中,Objective-C 中 ".h" 文件负责声明公共变量和方法,".m" 文件负责声明私有变量,并实现所有方法。...这样我们可以保证在破坏原来代码封装的情况下实现新的功能。Objective-C 中,我们可以用 category 来实现类似功能。...另外,Swift 和 Objective-C 中还可以通过 protocol 和代理模式来实现更加灵活的扩展。 继承和多态。...Swift 和 Objective-C 是不支持多继承的,因为这会造成菱形问题,即多个父类实现了同一个方法,子类无法判断继承哪个父类的情况。

    1.3K20
    领券