作者angelina877 (牛牛)
看板MacDev
标题[问题] cs193p 程式问题
时间Wed Nov 11 22:12:03 2015
https://www.youtube.com/watch?v=ZqKbN_C4Yvg
课程影片约55分处
#import "TextStatsColorAndOutlineViewContrller.h"
@interface TextStatsColorAndOutlineViewContrller()
@property (weak, nonatomic) IBOutlet UILabel *colorfulCharacterLabel;
@property (weak, nonatomic) IBOutlet UILabel *outlineCharacterLabel;
@end
@implementation TextStatsColorAndOutlineViewContrller
-(void)setTextToAnalyze:(NSAttributedString *)textToAnalyze
{
_textToAnalyze = textToAnalyze;
if (self.view.window) [self updateUi];//如果是nil就不出现在萤幕上
}
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self updateUi];
}
-(void) updateUi
{
self.colorfulCharacterLabel.text = [[self characterWithAttribute:NSForegroundColorAttributeName] length];
self.outlineCharacterLabel.text = [[self characterWithAttribute:NSForegroundColorAttributeName] length];
}
-(NSAttributedString *)characterWithAttribute:(NSString *)attributeName
{
NSMutableAttributedString *characters = [[NSMutableAttributedString alloc ] init ];
int index = 0;
while (index < [self.textToAnalyze length]) {
NSRange range;
id value = [self.textToAnalyze attribute:attributeName atIndex:index effectiveRange: &range];
if (value) {
[characters appendAttributedString:[self.textToAnalyze attributedSubstringFromRange:range]];
index = range.location + range.length;
}
else{
index++;
}
}
return characters;
}
警告讯息:
在index = range.location + range.length;这一行
implicit conversion loses integer precision 'unsigned long' to 'int'
我的Code都照打
怎麽还是会有warninghttps://www.youtube.com/watch?v=ZqKbN_C4Yvg
课程影片约55分处
#import "TextStatsColorAndOutlineViewContrller.h"
@interface TextStatsColorAndOutlineViewContrller()
@property (weak, nonatomic) IBOutlet UILabel *colorfulCharacterLabel;
@property (weak, nonatomic) IBOutlet UILabel *outlineCharacterLabel;
@end
@implementation TextStatsColorAndOutlineViewContrller
-(void)setTextToAnalyze:(NSAttributedString *)textToAnalyze
{
_textToAnalyze = textToAnalyze;
if (self.view.window) [self updateUi];//如果是nil就不出现在萤幕上
}
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self updateUi];
}
-(void) updateUi
{
self.colorfulCharacterLabel.text = [[self characterWithAttribute:NSForegroundColorAttributeName] length];
self.outlineCharacterLabel.text = [[self characterWithAttribute:NSForegroundColorAttributeName] length];
}
-(NSAttributedString *)characterWithAttribute:(NSString *)attributeName
{
NSMutableAttributedString *characters = [[NSMutableAttributedString alloc ] init ];
int index = 0;
while (index < [self.textToAnalyze length]) {
NSRange range;
id value = [self.textToAnalyze attribute:attributeName atIndex:index effectiveRange: &range];
if (value) {
[characters appendAttributedString:[self.textToAnalyze attributedSubstringFromRange:range]];
index = range.location + range.length;
}
else{
index++;
}
}
return characters;
}
警告讯息:
在index = range.location + range.length;这一行
implicit conversion loses integer precision 'unsigned long' to 'int'
我的Code都照打
怎麽还是会有warning....
不解QQ
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.127.186.166
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MacDev/M.1447251126.A.5CD.html
1F:→ Esvent: 因为编译的环境不同 arm64的NSInteger是long 之前是int 11/11 23:12
2F:→ Esvent: 啊说错 之前也是long 不过arm64的long是8byte 其他4byte 11/11 23:13
4F:→ Esvent: 32位元 long(4byte) <=> int(4byte) 长度相同 可直接转换 11/11 23:21
5F:→ Esvent: 64位元 long(8byte) <=> int(4byte) 长度不同 会掉资讯 11/11 23:23