shell note 2 coding

#search file in dir

1
2
find . | grep 'keyword'
find . | grep 'keyword' | xargs open #open grepped file

#logical

  1. 字符串判断
表达式 逻辑
str1 = str2     当两个串有相同内容、长度时为真
str1 != str2    当串str1和str2不等时为真
-n str1       当串的长度大于0时为真(串非空)
-z str1       当串的长度为0时为真(空串)
str1         当串str1为非空时为真
  1. 数字的判断
表达式 逻辑
int1 -eq int2    两数相等为真
int1 -ne int2    两数不等为真
int1 -gt int2    int1大于int2为真
int1 -ge int2    int1大于等于int2为真
int1 -lt int2    int1小于int2为真
int1 -le int2    int1小于等于int2为真
  1. 文件的判断
表达式 逻辑
-r file     用户可读为真
-w file     用户可写为真
-x file     用户可执行为真
-f file     文件为正规文件为真
-d file     文件为目录为真
-c file     文件为字符特殊文件为真
-b file     文件为块特殊文件为真
-s file     文件大小非0时为真
-t file     当文件描述符(默认为1)指定的设备为终端时为真
  1. 复杂逻辑断
表达式 逻辑
-a        与
-o       或
!       非

eg.

1
2
3
4
5
if [ $# -eq 0 ]
then
echo "No arguments supplied"
fi
# variable will tell you the number of input arguments the script was passed
1
2
3
4
5
if [ -z "$1" ]
then
echo "No argument supplied"
fi
#The -z switch will test if the expansion of "$1" is a null string or not. If it is a null string then the body is executed.

#file
[ -f “filepath” ] :判断是否是一个文件
[ -d “folerpath” ] :判断是否是一个文件夹

multiple targets building

link
stackoverflow.com 233

Create New Target

  1. select project target
  2. right click
  3. Duplicate

#Rename Target,Scheme And Product

  1. Manage Schemes
  2. select target , slow click or return key
  3. scheme , stackoverflow.com 233
  4. build target, in Edit Scheme... Build tab if there are multiple targets, remove useless targets with unchecking all checkboxes and delete them
  5. Build Setting change Product Name from xxx copy to newName

#Info.plist
rename info.plist ,in Build Settings General tag select new plist file

#Preprocessor
Select “Awesome Lite” target > Build Settings > Preprocessing > Preprocessor Macros > Add TARGET_LITE to each of the configuration (eg both Debug and Release configurations).

1
2
3
4
5
#if defined(TARGET_LITE)
NSLog(@"Lite version");
#else
NSLog(@"Original version");
#endif

#Resources, Images and Assets Catalog
Select the resource > File Inspector > Target Membership > check the targets intended.

swift lazy initialization

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// {#code#}() 是执行闭包函数
lazy var someView: UIView = {
var result = UIView()
//do something
return result
}()
// lazy 是延迟加载的关键字,也可以直接用
lazy var someView: UIView = UIView()
// 或者
lazy var someView: UIView = SomeViewController.setupSomeView()
static func setupSomeView() -> UIView {
// setup someView
return someView
}

switch in swift

###swift

1
2
3
4
5
6
7
8
9
10
11
12
var testVar = 1
var result = 0
switch(testVar) {
case 0:
fallthrough
case 1:
result = 1
default:
result = 3
}

###objc

1
2
3
4
5
6
7
8
9
10
11
12
13
int testVar = 1;
int result = 0;
switch(testVar) {
case 0:
case 1:
result = 1;
break;
default:
result = 3;
break;
}

use app icons and launch images in code

iOS 7 App Icons, Launch images And Naming Convention While Keeping iOS 6 Icons

Xcode 5 & Asset Catalog: How to reference the LaunchImage?

#UIImage+SplashImage

For App Icons:

iPhone

  • AppIcon57x57.png (iPhone non retina) [Notice the Icon name prefix]
  • AppIcon57x57@2x.png (iPhone retina)

iPad

  • AppIcon72x72~ipad.png (iPad non retina)
  • AppIcon72x72@2x~ipad.png (iPad retina)

For Launch Images

  • LaunchImage-568h@2x.png
  • LaunchImage-700-568h@2x.png
  • LaunchImage-700-Landscape@2x~ipad.png
  • LaunchImage-700-Landscape~ipad.png
  • LaunchImage-700-Portrait@2x~ipad.png
  • LaunchImage-700-Portrait~ipad.png
  • LaunchImage-700@2x.png
  • LaunchImage-Landscape@2x~ipad.png
  • LaunchImage-Landscape~ipad.png
  • LaunchImage-Portrait@2x~ipad.png
  • LaunchImage-Portrait~ipad.png
  • LaunchImage.png
  • LaunchImage@2x.png
  • LaunchImage-800-667h@2x.png (iPhone 6)
  • LaunchImage-800-Portrait-736h@3x.png (iPhone 6 Plus Portrait)
  • LaunchImage-800-Landscape-736h@3x.png (iPhone 6 Plus Landscape)