No visible @interface for "MobilePhone" declares the selector "takePhoto"

探讨了在Objective-C编程中遇到的与消息匹配相关的问题,详细解释了产生原因,并提供了有效的解决方案,确保了接收者与对应消息的匹配性。
//No visible @interface for "MobilePhone" declares the selector "takePhoto"
//产生原因: 没有找到给接收者发送的消息(也就是.h文件中没有该方法)
//解决方案: 查看接收者与对应消息是否匹配, 如果不匹配, 改成匹配的, 或者给该类添加该方法

你遇到的错误: ``` No visible @interface for 'SDNStaticsCategoriesDetailCell' declares the selector 'fetchNumberFormaterWithPercision:' ``` 表示你调用的方法 `fetchNumberFormaterWithPercision:` **并没有在当前类 `SDNStaticsCategoriesDetailCell` 中声明或实现**,所以编译器找不到这个方法。 --- ### ✅ 解决方法 你需要确保 `fetchNumberFormaterWithPercision:` 方法: 1. **在当前类中定义并实现**; 2. 或者是从父类继承的; 3. 或者是某个分类(Category)中添加的方法。 --- ### ✅ 修复方案一:在当前类中实现该方法 #### 1. 在 `.h` 文件中声明方法(可选): ```objc // SDNStaticsCategoriesDetailCell.h @interface SDNStaticsCategoriesDetailCell : UITableViewCell - (NSNumberFormatter *)fetchNumberFormaterWithPercision:(NSInteger)precision; @end ``` #### 2. 在 `.m` 文件中实现方法: ```objc // SDNStaticsCategoriesDetailCell.m @implementation SDNStaticsCategoriesDetailCell - (NSNumberFormatter *)fetchNumberFormaterWithPercision:(NSInteger)precision { NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; [formatter setNumberStyle:NSNumberFormatterDecimalStyle]; [formatter setMaximumFractionDigits:precision]; [formatter setMinimumFractionDigits:0]; [formatter setRoundingMode:NSNumberFormatterRoundHalfUp]; return formatter; } @end ``` --- ### ✅ 修复方案二:将方法定义为类方法或工具类方法 如果你希望多个类都能使用这个方法,可以将其定义为一个工具类方法,例如: #### 1. 创建 `NumberFormatterUtils.h/m` ```objc // NumberFormatterUtils.h + (NSNumberFormatter *)fetchNumberFormaterWithPercision:(NSInteger)precision; ``` ```objc // NumberFormatterUtils.m + (NSNumberFormatter *)fetchNumberFormaterWithPercision:(NSInteger)precision { NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; [formatter setNumberStyle:NSNumberFormatterDecimalStyle]; [formatter setMaximumFractionDigits:precision]; [formatter setMinimumFractionDigits:0]; [formatter setRoundingMode:NSNumberFormatterRoundHalfUp]; return formatter; } ``` #### 2. 调用方式改为: ```objc self.trafficPercentLabel.text = [NSString stringWithFormat:@"%@ (%@%%)", trafficStr, [[NumberFormatterUtils fetchNumberFormaterWithPercision:2] stringFromNumber:@(percent)] ]; ``` --- ### ✅ 总结 | 方法 | 适用场景 | 优点 | 缺点 | |------|----------|------|------| | 当前类实现 | 只在当前类频繁使用 | 简洁 | 无法复用 | | 工具类实现 | 多类共用格式化方法 | 可复用 | 需要引入头文件 | --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值