Giter Site home page Giter Site logo

ios_resource's Introduction

iOS_Resource

买不起软件系列@

IDE及效率软件的使用技巧@

AndroidStudio@

Alfred@

科学的查资料@

科学上网@

学习资料@

Awesome@

算法@

diff@diff算法@

UIKit@Foundation@

NSString@

NSData@

NSDate@

NSNumber@NSNumberFormatter@

NSOperation@

UIViewController Transition@转场@

UITableView@ UICollectionView@

UICollectionViewCompositionalLayout@

Loading@Load@placeholder@

Progress@ProgressBar@ProgressView@

Objc源码@

那些年我们追过的技术博客@

Xcode@调试@

Xcode奇巧淫技@

Xcode BuildSetting@

数据库@

小程序@

地图@ 绘制@

Apple分发渠道

NetworkExtension@VPN@代理@

wwdc@

HTTPS@HTTP@中间人攻击

HTTP Cache@

绘画@paint@

UndoManager@

分辨率

iPhone型号@UIDevice@

视频@ video@

音频@

加签@验签@

编译

clang@ld@strip@

lipo -thin arm64 xxxx/libcrypto.a -o crypto_arm64.a
lipo -thin arm64 xxxx/libssl.a -o ssl_arm64.a
ar -x xxxx/ssl_arm64.a 
ar -x xxxx/crypto_arm64.a 
ld -r -exported_symbols_list exportSymbol.txt  -o gmssl.o *.o //设置导出符号
strip -x gmssl.o //裁剪本地(type为小写字母)符号
ar -rc libgocssl.a gmssl.o //压缩为静态库

代码规范Coding Guidelines

逆向@

越狱@jailbreak@

//appdecrypt 使用
//macos
iproxy 2222 22
scp -P 2222 ~/Documents/appdecrypt/appdecrypt [email protected]:/tmp

ssh -p 2222 [email protected]
//iphone
ps aux | grep -i appname
cd /tmp
./appdecrypt /var/containers/Bundle/Application/xxxx /tmp
cd Payload/
tar -cvf /tmp/dump.tar ./

//macos
scp -P 2222 [email protected]:/tmp/dump.tar ~/Desktop/xxxDump

security find-identity -v -p codesigning //查看本地证书
codesign -fs "Apple Development: xxx (xxx)" dumpdecrypted.dylib
scp -P 2222 ./dumpdecrypted.dylib [email protected]:/tmp
进入手机终端cd到tmp
执行DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/C1FD6921-E279-472A-8D60-22B555CEA148/xxx.app/PlugIns/WidgetExtension.appex/WidgetExtension
将目录下生成可执行文件.decrypted 拷贝到电脑,在电脑终端执行:scp -P 2222 [email protected]:/tmp/WidgetExtension.decrypted ~/Desktop/xxxDump

机器学习@

AIGC@AI@

证书 HTTPS

实现默认动画全局返回

CharacterSet@

css

手势/Gesture/UITouch

手势密码/图形密码

UIKitDynamics

excel@

版本升级/迁移

certificate/p12

抓包@

# File: /etc/pf.anchors/http 注意结尾回车
rdr pass on bridge100 inet proto tcp to any port {80, 443} -> 127.0.0.1 port 8080

# File: /etc/pf.conf 注意结尾回车
#rdr-anchor "com.apple/*"
#添加此行
rdr-anchor "http-forwarding"
#load anchor "com.apple" from "/etc/pf.anchors/com.apple"
#添加此行
load anchor "http-forwarding" from "/etc/pf.anchors/http"

#安装mitmproxy后运行
mitmproxy --mode transparent --showhost

#网上说需要运行sudo sysctl -w net.inet.ip.forwarding=1,实测即便sudo sysctl -w net.inet.ip.forwarding=0也可以抓到包
#但是通过配置rdr pass on bridge100 inet proto tcp to any port {80, 443} -> 127.0.0.1 port 8888 为charles的端口后,无法抓取,即便charles开启透明代理也不行


@synchronized

form 表单

设备方向

autolayout@

KVC@

自动化测试@

python@

推送APNS@

runtime@

time@

tiktok@

Property@Method@

extern "C" unsigned long OBJC_IVAR_$_BLAView$_pModel;

(*(id *)((char *)view + OBJC_IVAR_$_BLAView$_pModel))

上述这种形式来访问的,因此我们可以通过extension声明私有ivar的形式来访问私有ivar(成员变量)

ARC@

mPaaS@

CALayer@

Animation@动画@

Animation@Appstore@

empty data

搜索 search@

header search@

objc属性@

数学符号

  • [latex 或者 Katex]

Authority/Permission@

公钥私钥 csr

CocoaPods@

MonoRepo

头文件依赖@类关联@

GIS@地图绘制@arcMap@

(6条消息) OpenLayers使用_David_jiang-CSDN博客 ArcGIS for Desktop入门教程_第六章_用ArcMap制作地图 - ArcGIS知乎-新一代ArcGIS问答社区 mapshaper ArcGIS GeoJSON Layer (6条消息) ArcGIS如何将地理要素数据和JSON进行互转_jixg1800的专栏-CSDN博客_arcgis json openlayers地图框架使用介绍 - 简书 【从零开始学GIS】ArcGIS中的绘图基操作(一) - 知乎 叫我三三就好 - 知乎 【从零开始学GIS】ArcGIS中的绘图基操作(一) - 知乎 【从零开始学GIS】ArcGIS中的绘图基本操作(二) - 知乎 openlayer 渲染geojson - Google 搜索 openlayer 可视化你的足迹 - Web端 - I code it shp与json互转_可能黑客的博客-CSDN博客_json转shp ArcMap中使用ArcPy实现Geometry与WKT的相互转换_积思园-CSDN博客 openlayers 加载ArcGIS 切片地图 - GIS开发者 ArcGIS操作教程(40)使用ArcMap创建地图切片 | 麻辣GIS 高德地图 | 地铁图

RAC@ReactiveCocoa@

内存管理@

CodeSnippets@ 代码片段

Xcode 插件/ extensions

热修复

分享@

info.plist@

AssociatedDomain@

Telegram-iOS@

https://github.com/bazelbuild/tulsi

git clone --recursive -j8 --branch release-8.6 https://github.com/TelegramMessenger/Telegram-iOS.git 
1.git clone --recursive -j8 https://github.com/TelegramMessenger/Telegram-iOS.git
git submodule update

2.mkdir -p $HOME/bazel-dist

3.cd $HOME/bazel-dist
curl -O -L https://github.com/bazelbuild/bazel/releases/download/4.0.0/bazel-4.0.0-darwin-x86_64
mv bazel-* bazel

4.chmod +x bazel
./bazel --version

5.mkdir -p $HOME/telegram-configuration

6.cp -R build-system/example-configuration/* $HOME/telegram-configuration/

7.mkdir -p $HOME/telegram-bazel-cache


python3 build-system/Make/Make.py \
    --bazel="$HOME/bazel-dist/bazel" \
    --cacheDir="$HOME/telegram-bazel-cache" \
    generateProject \
    --configurationPath="$HOME/telegram-configuration" \
    --disableExtensions
    
python3 build-system/Make/Make.py \
    --overrideBazelVersion\
    --overrideXcodeVersion\
    --bazel="$HOME/bazel-dist/bazel" \
    --cacheDir="$HOME/telegram-bazel-cache" \
    generateProject \
    --configurationPath="$HOME/telegram-configuration" \
    --disableExtensions

Crash@

系统库符号化 找到对应的系统库符号化文件 SymbolPath = /Users/blackchena/Library/Developer/Xcode/iOS DeviceSupport/<iOS version(buildnumber)>/Symbols/System/Library/Frameworks/<系统库名称> 系统库macho /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/UIKit.framework/UIKit atos -o SymbolPath -l <系统库load path> <需要符号化的address>

适配@

后台@

下载@Download@

warning xcode

三方控件@

uiswitch@

Chart@/图表@

socket@

pullup 类似滴滴打车 选择打车出发地

地址选择

包体积优化@包瘦身@

旋转@

UIApplication@UIApplicationDelegate@

一些开发工具@

status@

推送@

UIScrollView@

UIGestureRecognizer@

SideBar@/SideMenu@

UITableView@

tableView.estimatedSectionHeaderHeight = CGFLOAT_MIN;//动态tableview高度可能会造成影响mark一下
tableView.estimatedSectionFooterHeight = CGFLOAT_MIN;

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    return CGFLOAT_MIN;
}

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    return CGFLOAT_MIN;
} 

  • 尽量解决边缘展开时动画的抖动
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    NSInteger oldIndex = _currentSelectedIndex;
    if (_currentSelectedIndex == indexPath.row) {
        _currentSelectedIndex = NSNotFound;
    } else {
        _currentSelectedIndex = indexPath.row;
    }

    NSMutableArray *indexPaths = [NSMutableArray array];
    if (_currentSelectedIndex != NSNotFound) {
        [indexPaths addObject:[NSIndexPath indexPathForRow:_currentSelectedIndex inSection:0]];
    }
    if (oldIndex != NSNotFound) {
        [indexPaths addObject:[NSIndexPath indexPathForRow:oldIndex inSection:0]];
    }
    
    [tableView reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationNone];
    if (_currentSelectedIndex != NSNotFound) {
        [tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:_currentSelectedIndex inSection:0] atScrollPosition:UITableViewScrollPositionMiddle animated:YES];
    } else {
        [tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:indexPath.row inSection:0] atScrollPosition:UITableViewScrollPositionNone animated:YES];
    }
}

图片@

图片浏览@

图片其它@

UIPickerView@

渲染原理@

滤镜@

+ (UIImage*)grayscale:(UIImage*)anImage type:(int)type
{
    CGImageRef  imageRef;
    imageRef = anImage.CGImage;
    
    size_t width  = CGImageGetWidth(imageRef);
    size_t height = CGImageGetHeight(imageRef);
    
    size_t                  bitsPerComponent;
    bitsPerComponent = CGImageGetBitsPerComponent(imageRef);
    
    size_t                  bitsPerPixel;
    bitsPerPixel = CGImageGetBitsPerPixel(imageRef);
    
    size_t                  bytesPerRow;
    bytesPerRow = CGImageGetBytesPerRow(imageRef);
    
    CGColorSpaceRef         colorSpace;
    colorSpace = CGImageGetColorSpace(imageRef);
    
    CGBitmapInfo            bitmapInfo;
    bitmapInfo = CGImageGetBitmapInfo(imageRef);
    
    bool                    shouldInterpolate;
    shouldInterpolate = CGImageGetShouldInterpolate(imageRef);
    
    CGColorRenderingIntent  intent;
    intent = CGImageGetRenderingIntent(imageRef);
    
    CGDataProviderRef   dataProvider;
    dataProvider = CGImageGetDataProvider(imageRef);
    
    CFDataRef   data;
    UInt8*      buffer;
    data = CGDataProviderCopyData(dataProvider);
    buffer = (UInt8*)CFDataGetBytePtr(data);
    
    NSUInteger  x, y;
    for (y = 0; y < height; y++) {
        for (x = 0; x < width; x++) {
            UInt8*  tmp;
            tmp = buffer + y * bytesPerRow + x * 4;
            
            UInt8 red,green,blue;
            red = *(tmp + 0);
            green = *(tmp + 1);
            blue = *(tmp + 2);
            
            UInt8 brightness;
            
            switch (type)
            {
                case 1://灰度
                    brightness = (77 * red + 28 * green + 151 * blue) / 256;
                    
                    *(tmp + 0) = brightness;
                    *(tmp + 1) = brightness;
                    *(tmp + 2) = brightness;
                    break;
                    
                case 2://深棕色
                    *(tmp + 0) = red;
                    *(tmp + 1) = green * 0.7;
                    *(tmp + 2) = blue * 0.4;
                    break;
                    
                case 3://反色
                    *(tmp + 0) = 255 - red;
                    *(tmp + 1) = 255 - green;
                    *(tmp + 2) = 255 - blue;
                    break;
                    
                default:
                    *(tmp + 0) = red;
                    *(tmp + 1) = green;
                    *(tmp + 2) = blue;
                    break;
            }
            
        }
    }
    
    CFDataRef   effectedData;
    effectedData = CFDataCreate(NULL, buffer, CFDataGetLength(data));
    
    CGDataProviderRef   effectedDataProvider;
    effectedDataProvider = CGDataProviderCreateWithCFData(effectedData);
    
    CGImageRef  effectedCgImage;
    UIImage*    effectedImage;
    effectedCgImage = CGImageCreate(
                                    width, height,
                                    bitsPerComponent, bitsPerPixel, bytesPerRow,
                                    colorSpace, bitmapInfo, effectedDataProvider,
                                    NULL, shouldInterpolate, intent);
    effectedImage = [[UIImage alloc] initWithCGImage:effectedCgImage];
    
    CGImageRelease(effectedCgImage);
    CFRelease(effectedDataProvider);
    CFRelease(effectedData);
    CFRelease(data);
    
    return effectedImage;
}

Label@

UITextView@

Button@

textfield/textview

keyBoard@

蓝牙

输入@

mask@镂空@

Http@icmp@ping@tcping@

speedtest@

富文本@coretext@

api 参数构造 params

navigation tableView/scrollView header

NavigationBar@

Date@

  • SwiftDateThe best way to manage Dates and Timezones in Swift

segment@

PageVC@

PageControl@

C@

结构体、结构体体指针作为函数返回值_huizhang0110的博客-CSDN博客_结构体作为函数返回值

TabBar@

banner@

  • WenchaoD/FSPagerViewFSPagerView is an elegant Screen Slide Library. It is extremely helpful for making Banner、Product Show、Welcome/Guide Pages、Screen/ViewController Sliders.

PlaceHolder@

引导页@ 操作指南@ Guide@ walkThrough@

NSDictionary@

人脸识别@

OCR@身份证识别@

GCD@

多线程安全@

锁@ lock@

别人总结@

webview/wkwebview@

xcasset@

html@

protocol@

router@/组件化@

uuid@

设备@

开源应用@开源项目@

抢购脚本@

Chat@

  • badoo/ChattoA lightweight framework to build chat applications, made in Swift

数据储存@

MAC应用

加密编码

runloop@

Toast/Hud@

stackview

Pop@Presentation@

Alert@/ActionSheet@

UINavigation

Login@

Color@

Theme主题

内购@iap@

国际化

UIFont@字体@

UIImageView@

电商导购分佣@

TCP/IP@

Url Scheme

相机相册

技术文档@

二维码

版本兼容

版本更新

Category/Extension@

#available/@available API可用性

UI/设计

NSBundle@

设计模式@

联系人

icon@

UIBezierPath@

宏@#define@

架构MVC/MVP/MVVM

目录结构@

Markdown@

attribute

消息转发@isa@

timer@

UML@流程图@

翻译@

github/organization

正则@正则表达式@

find . -name "GIO*" | sed -e "p;s/GIO/ZYHM/" | xargs -n2 mv批量修改文件名 find ./ -name 'ZYH*' -type f | sed -e "p;s/ZYH/GOC/" | xargs -n2 mv find ./ -type d -maxdepth 1 -name 'Cocoa*' -exec ls -l {} \;批量删除Cocoa开始当前目录的文件夹

egrep -i '([^_: <k`\)\^\"\&\/\+\(\[])af' ./AFNetworking/ -r//查找不能替换的af

  • 查找文本替换文本grep com.xxx.xxx -rl ./ | xargs -I{} sed -i '' -e 's/com.xxx.xxx/com.xxx1.xxx1/g' {} 注意sed -i '' 必须要用 macos 会把-i后面的参数当做修改时备份文件的后缀

引用计数

c++@

xcode不支持当前iOS版本解决方案

  • xcode不支持当前iOS版本解决方案ln -s /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/10.2\ (14C5069c)/ /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
  • The code signature version is no longer supported go to the TARGETS -> select[your project name] -> General -> Frameworks,Libraries,and EmbeddedContent -> set the framework with [Do Not Embed]

xcode 设置

性能优化@

内存@

#pragma pack(2) //2为对齐系数 结构体的整体对齐规则是按照内存占用最大的struct数据成员和对齐系数相比取最小值去对齐,数据成员对齐:第一个数据成员A放在偏移为 0 的地方,以后每个数据成员B的偏移为对齐系数与该数据成员(也就是 B)的自身长度中较小那个数的整数倍,不够整数倍的补齐

图片编码解码

链式调用@

启动动画

埋点

Debug@

分享/三方登录

前端@

协变/逆变

swift/oc 混编

umbrella Framework / Module

yacc lex

快捷键@

Terminal

Xcode

  • Xcode: 选择一整行:光标移动到末尾ctrl+shift+a 或 shift+alt+⬆ , ctrl + e|a 移动光标到行尾|首

linux@/shell@/vim@/bash@

text="111
222\n333"

echo $text   # 111 222\n333
echo "$text" # 111[换行]222\n333
echo -e $text # 111 222[换行]333
echo -e "$text" # 111[换行]222[换行]333

并查集@

ios11/xcode9/llvm

总结

两线段交点@

持续集成/打包

git@ 学习

加密@解密@

make distclean
export CC=clang
export CROSS_COMPILE='/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/'
export CROSS_TOP="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer"
export CROSS_SDK="iPhoneOS14.3.sdk"
./Configure ios64-cross no-shared // 如果是9eadfd4cb6eac17bff776b2a8c47de106c70e34a版本需要添加 no-asm 最新版添加-DGMSSL_NO_TURBO 因为调用私有getcontext方法的问题添加no-threads


otool -lv ./xxxx.a 查看支持的platform为macOS还是IOSSIMULATOR  otool -l <path-to-library> | grep platform  grep iphone  macos

make distclean
export CC=clang
export CROSS_COMPILE='/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/'
export CROSS_TOP="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer"
export CROSS_SDK="iPhoneSimulator.sdk"
./Configure iphoneos-cross no-shared // 如果是9eadfd4cb6eac17bff776b2a8c47de106c70e34a版本需要添加 no-asm 最新版添加-DGMSSL_NO_TURBO 因为调用私有getcontext方法的问题添加no-threads
make

WebRTC@

  • v4_CN_WebRTC · ossrs/srs Wiki
  • kernelj/jswebrtc: JSWebrtc – 支持 SRS 的 Webrtc 播放器
  • twcc简介TWCC全称是Transport wide Congestion Control
  • ACK:Acknowledgement,它是一种正向反馈,接收方收到数据后回复消息告知发送方。
  • NACK:Negative Acknowledgement,则是一种负向反馈,接收方只有在没有收到数据的时候才通知发送方。
  • DTLS(Datagram Transport Layer Security)即数据包传输层安全性协议

传输层——报文段(segment)/数据报(datagram) (注:TCP叫TCP报文段,UDP叫UDP数据报,也有人叫UDP段) 网络层——分组、数据包(packet) 链路层——帧(frame) 物理层——P-PDU(bit)

面试@

gif loading

Test/单元测试@

app推广

brew@

  • brew list node查看node安装地址

动态库@framework@

通过nm查看符号表其中符号类型t代表 non-external text section symbol
Each symbol name is preceded by its value (blanks if undefined).  Unless the -m
       option is specified, this value is followed by one of the following characters,
       representing the symbol type: U (undefined), A (absolute), T (text section symbol),
       D (data section symbol), B (bss section symbol), C (common symbol), - (for debugger
       symbol table entries; see -a below), S (symbol in a section other than those
       above), or I (indirect symbol).  If the symbol is local (non-external), the
       symbol's type is instead represented by the corresponding lowercase letter.  A
       lower case u in a dynamic shared library indicates a undefined reference to a
       private external in another module in the same library.

静态库@

+load +initialize dyld 启动优化

C语言@

brew install doxygen
brew install graphviz
cd /Users/xxx/Documents/xxx/project
doxygen -g

HAVE_DOT               = YES
EXTRACT_ALL            = YES
EXTRACT_PRIVATE        = YES
EXTRACT_STATIC         = YES
CALL_GRAPH             = YES
CALLER_GRAPH           = YES
DISABLE_INDEX          = YES 
GENERATE_TREEVIEW      = YES
RECURSIVE              = YES

doxygen Doxyfile

carthage@

汇编@

编译@

llvm@

重签名@

When displaying a signature, extract any entitlement data from the signature and write it to the path given. Use "-" to write to standard output. By default, the binary "blob" header is returned intact; prefix the path with a colon ":" to automati- cally strip it off. If the signature has no entitlement data, nothing is written (this is not an error).

MACHO@

chrome@

leader@

重签名@sign@resign@

shadowsocks-libev@

git clone [email protected]:jedisct1/libsodium.git
cd ~/Documents/libsodium
修改autogen.sh中的dev_setup=true 或 autogen.sh -s
./autogen.sh
./configure
./dist-build/apple-xcframework.sh
cd libsodium-apple

appStore@rate@

广告@

github@

shell@bash@

网易云信@

Swift@

SwiftUI@

Widget@

Swift Package Manager@

图床@

UI@

Codable@

语法@

Swift开源库@

MacOS@

工具@

图片处理

sublime@

  • [快捷打开文件或文件夹 finder/terminal]
ln -s "/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl" /usr/local/bin/sublime
  • key binding 'super' 代表command⌘
I wonder how could I prevent the default behavior "the inner scroll view scrolls until it can't scroll any more, at which point the outer scroll view scrolls"? I wish when the user scrolls the inner view, the outer view could stay, even if the inner view has scrolled to the end.
clang -rewrite-objc -fobjc-arc -stdlib=libc++ -mmacosx-version-min=10.7 -fobjc-runtime=macosx-10.7 -Wno-deprecated-declarations keke.m

go@

软著@软件著作权

简历@

vscode@

ios_resource's People

Contributors

blackchena avatar blackchencsy avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.