細節總結(一)

self.XXX與_XXX的區別
  • 通過self.XXX得到的數據相當于調用get函數取值,等價于[self XXX];而通過_XXX獲取的是自己的實例變量,直接對變量進行操作,并未調用get函數。所以,通過懶加載方式初始化的變量只能通過self.XXX調用,否則可能會存在未初始化的問題。
  • self.xxx是對屬性的訪問;而_xxx是對局部變量的訪問。在使用self.xxx時是調用一個getter方法。會使引用計數加一,而_xxx不會使用引用技術加一的。
  • 所以,使用self.XXX是更好的選擇,因為這樣可以兼容懶加載,同時也避免了使用下滑線的時候忽略了self這個指針,后者容易在block中造成循環引用。同時,使用 _XXX是獲取不到父類的屬性,因為它只是對局部變量的訪問。
顏色處理:
  • RGB:
    UI給的色彩無法直接獲取的時候,可以通過mac自帶的系統工具——數碼測色計,獲取對應的RGB顏色。
[UIColor colorWithRed:242/255.0 green:242/255.0 blue:242/255.0 alpha:1 ];
  • 十六進制顏色:
    若顏色是寫死的,可以在網上找一個十六進制和RGB顏色轉換器把十六進制轉換成RGB顏色;另外,可以寫一個Category直接用十六進制字符串定義顏色:
    UIColor+Hex.h:
#import <UIKit/UIKit.h>@interface UIColor (Hex)+ (UIColor*)colorWithHex:(NSString *)hexString alpha:(CGFloat)alphaValue;+ (UIColor*)colorWithHex:(NSString *)hexString;+ (NSString *)hexFromUIColor: (UIColor*)color;@end

UIColor+Hex.m:

#import "UIColor+Hex.h"@implementation UIColor (Hex)+ (UIColor*)colorWithHex:(NSString *)hexString alpha:(CGFloat)alphaValue
{NSString *tmpHexString = [[hexString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];if ([tmpHexString hasPrefix:@"#"]) {tmpHexString = [hexString stringByReplacingOccurrencesOfString:@"#" withString:@"0x"];}else if (![tmpHexString hasPrefix:@"0x"]){tmpHexString = [NSString stringWithFormat:@"0x%@", tmpHexString];}if (tmpHexString.length != 8) {return [UIColor clearColor];}long colorLong = strtoul([tmpHexString cStringUsingEncoding:NSUTF8StringEncoding], 0, 16);return [UIColor colorWithRed:((float)((colorLong & 0xFF0000) >> 16))/255.0green:((float)((colorLong & 0xFF00) >> 8))/255.0blue:((float)(colorLong & 0xFF))/255.0 alpha:alphaValue];
}+ (UIColor*)colorWithHex:(NSString *)hexString
{return [UIColor colorWithHex:hexString alpha:1.0];
}+ (NSString *)hexFromUIColor: (UIColor*) color {if (CGColorGetNumberOfComponents(color.CGColor) < 4) {const CGFloat *components = CGColorGetComponents(color.CGColor);color = [UIColor colorWithRed:components[0]green:components[0]blue:components[0]alpha:components[1]];}if (CGColorSpaceGetModel(CGColorGetColorSpace(color.CGColor)) != kCGColorSpaceModelRGB) {return [NSString stringWithFormat:@"#FFFFFF"];}return [NSString stringWithFormat:@"#%X%X%X", (int)((CGColorGetComponents(color.CGColor))[0]*255.0),(int)((CGColorGetComponents(color.CGColor))[1]*255.0),(int)((CGColorGetComponents(color.CGColor))[2]*255.0)];
}@end

然后通過[UIColor colorWithHex:_sectionColorArray[section]]直接定義顏色。

轉載于:https://www.cnblogs.com/wust-zxl/p/6475932.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/284469.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/284469.shtml
英文地址,請注明出處:http://en.pswp.cn/news/284469.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

redis 安裝錯誤 jemalloc.h: No such file or directory

為什么80%的碼農都做不了架構師&#xff1f;>>> 錯誤描述 [rootmysql-rtb-slave redis-4.0.1]# make && make install cd src && make all make[1]: Entering directory /usr/local/src/redis-4.0.1/srcCC Makefile.dep make[1]: Leaving director…

OAuth,JWT ,OIDC你們搞得我好亂啊

hi&#xff0c;這里是桑小榆&#xff0c;這次分享的不是生活文&#xff0c;而是技術文。基于OAuth2.0協議的授權認證&#xff0c;初次接觸授權認證知識的時候&#xff0c;出現了不少熱門名詞&#xff0c;“OAuth”&#xff0c;“JWT”&#xff0c;“OIDC”&#xff0c;這簡直讓…

MyEclipse快捷鍵大全

存盤 Ctrls(肯定知道) 注釋代碼 Ctrl/ 取消注釋 Ctrl\(Eclipse3已經都合并到Ctrl/了) 代碼輔助 Alt/ 快速修復 Ctrl1 代碼格式化 CtrlShiftf 整理導入 CtrlShifto 切換窗口 Ctrlf6 <可改為ctrltab方便> ctrlshiftM 導入未引用的包 ctrlw 關閉單個窗口 F3 跳轉到類、變量的…

軟件測試技術第二次作業——程序錯誤的判斷

在做作業之前我們首先要明確軟件測試過程中的幾個名詞&#xff1a; Fault&#xff1a;在軟件測試中&#xff0c;fault是指程序中靜態的缺陷&#xff0c;也就是指在程序中存在的編程錯誤。 Error&#xff1a;在軟件測試中&#xff0c;error是指由于程序中存在的fault而產生的不正…

【GlobalMapper精品教程】006:Excel等表格(.xls)或文本(.txt .csv)坐標文件生成矢量點

【拓展閱讀】: 【QGIS入門實戰精品教程】4.5:QGIS打開Excel中的點坐標,并生成矢量文件 【ArcGIS微課1000例】0022:ArcGIS點(點坐標)自動連成線操作案例教程 【ArcGIS風暴】ArcGIS 10.2導入Excel數據X、Y坐標(經緯度、平面坐標),生成Shapefile點數據圖層 【ArcGIS風暴】…

Java編程思想 學習筆記1

一、對象導論 1.抽象過程   Alan Kay曾經總結了第一個成功的面向對象語言、同時也是Java所基于的語言之一的Smalltalk的五個基本特性&#xff0c;這些特性表現了純粹的面向對象程序設計方式   1&#xff09;萬物皆對象。   2&#xff09;程序是對象的集合&#xff0c;它們…

不只是日志收集,項目監控工具Sentry的安裝、配置、使用

前言上一篇文章介紹了ExceptionLess這個日志收集系統&#xff1a;ExceptionLess的安裝、配置、使用由于ExceptionLess官方提供的客戶端只有.Net/.NetCore平臺和js的&#xff0c;本文繼續介紹另一個日志收集系統&#xff1a;SentrySentry 是一個實時事件日志記錄和聚合平臺。&am…

64個數據分析常用術語

導讀&#xff1a;本篇文章&#xff0c;我們來講講數據分析常用語。 內容綜合整理自網絡 01 絕對數和相對數 絕對數&#xff1a;是反應客觀現象總體在一定時間、一定地點下的總規模、總水平的綜合性指標&#xff0c;也是數據分析中常用的指標。比如年GDP&#xff0c;總人口等等。…

redis 的bitmap 開源包 bitmapist的應用

2019獨角獸企業重金招聘Python工程師標準>>> 原理&#xff1a;http://my.oschina.net/u/1458120/blog/545224 bitmap包&#xff1a;https://github.com/Doist/bitmapist 要求redis> 2.6.0 bitmapist-master.zip 安裝自己下載解壓 python setup.py install &…

Django Views(視圖函數)

http請求中產生兩個核心對象&#xff1a; http請求&#xff1a;HttpRequest對象 http響應&#xff1a;HttpResponse對象 所在位置&#xff1a;django.http 之前我們用到的參數request就是HttpRequest 檢測方法&#xff1a;isinstance(request,HttpRequest) 1 HttpRequest對象…

Android 4 +https(如何啟動TLS1 1 and TLS1 2)

之前用的網絡請求框架是鴻洋的OkHttpUtils&#xff0c;網絡請求在5.0手機上使用https沒有問題&#xff0c;但是最近突然使用了一個4.4的系統&#xff0c;就報錯SSLException ....咋地咋地 然后 我們的副總給我們找一個博客&#xff0c;如何解決4.系統出現的這個問題&#xff0…

massCode 一款優秀的開源代碼片段管理器

本文將介紹一款適合程序員使用的個人代碼片段管理工具 massCode[1]。massCode小時候&#xff0c;也許我們每個人都會被老師要求有一個到處摘錄優美句子段落的作文素材本 —— 采蜜集。不可否認&#xff0c;這對我們的寫作水平的提高確實有很大的幫助。對開發人員來說當然也需要…

【ArcGIS Pro微課1000例】0021:Win10系統ArcGIS Pro3.0.1安裝教程(附ArcGIS Pro下載)

本文講解Win10系統上ArcGIS Pro3.0.1安裝教程,附軟件包下載。 文章目錄 一、 軟件安裝步驟1. 安裝.net Runtime 62. 安裝ArcGIS Pro3. 安裝中文語言4. 刪除代理二、軟件下載地址一、 軟件安裝步驟 [軟件名稱]: ArcGIS Pro 3.0.1 [軟件大小]:4.33GB [安裝環境]: Win 11/Win …

iOS逆向工程——非越獄調試

其實iOS的逆向分析業界已經十分成熟了&#xff0c;網上也有許多有趣的嘗試(一步一步實現iOS微信自動搶紅包(非越獄)。本文著重于如何在非越獄機器上進行調試&#xff0c;出于學習及總結的目的&#xff0c;記錄于此。 本文以破解游戲夢幻西游為例&#xff0c;逐步講解整個調試流…

[轉]2022 Flutter 宣布發布 Windows 正式版

原文鏈接&#xff1a; https://medium.com/flutter/announcing-flutter-for-windows-6979d0d01fed 自從推出 Flutter 以來&#xff0c;我們一直專注于為漂亮的定制應用提供跨平臺解決方案&#xff0c;這些應用被編譯為機器代碼并充分利用設備的底層圖形硬件功能。 今天這一愿景…

電腦經常彈出“不支持的硬件”解決辦法

電腦經常彈出“不支持的硬件”解決辦法。 通過微軟官方查證,這是由于以上處理器需要最新的Windows10系統才會這樣子的,而大多出現該提示的都安裝了Win7或是Win8.1系統。 來至微軟官方的說明 此錯誤出現的原因是各代新處理器要求最新Windows版本以獲得支持。 例如,Windows 1…

使用 Web API 上傳和下載多個文件

原文作者&#xff1a;Jay Krishna Reddy原文鏈接&#xff1a;https://www.c-sharpcorner.com/article/upload-and-download-multiple-files-using-web-api/翻譯&#xff1a;沙漠盡頭的狼&#xff08;谷歌翻譯加持&#xff0c;文中版本使用.NET 6升級&#xff09;---正文開始---…

詳解T-SQL的聯接機制

T-SQL的聯接分三種類型&#xff1a; 交叉聯接 ( cross join ) 內部聯接 (inner join) 外部聯接 (outer join) 每種聯接在邏輯上經歷不同的階段&#xff0c;分為笛卡爾乘積、篩選、添加外部行&#xff0c;如圖&#xff1a; 聯接類型 階段 交叉聯接 笛卡兒乘積 內部聯接…

Android FrameWork學習(一)Android 7 0系統源碼下載 編譯

最近計劃著研究下 Android 7.0 的系統源碼&#xff0c;之前也沒做過什么記錄&#xff0c;這次正好將學習的內容記錄下來&#xff0c;方便以后復習鞏固。 既然要學習我們的系統源碼&#xff0c;那我們第一步要做的就是下載源碼并進行編譯了。 #硬件環境要求 ###1. 編譯環境 按照…